2022-04-22 洗澡随笔

150 阅读1分钟

(1)为什么发现问题比解决问题重要?

举个HEM例子:
负载是1M 时,所耗时间是0.31ms,
当负载增加 8 倍达到 9M 时,所耗时间是8.07ms,增加了 25 倍!
看上去是一个坏消息,
但正因为发现了这个问题,才有了对应的一个简单粗暴的优化:
实例化 9 个HEM,每个存储 1M 负载,
仍是单线程跑,所耗时间理论上只会线性地增长,也就是2.79ms,
算上合并9个部分结果即8次加法运算,共2.8ms,理论上性能提升65.3%!
这也可以当做HEM的第10个优化措施了,避免了时间随负载超线性增长,
当然,这也是通用的优化,任何算法都可以这么干,甚至只是个trick。

(2)从捕蝇草到写页面

捕蝇草的绒毛有计数器和记忆功能,当20~30秒内绒毛多次感受到触碰刺激后就会把入侵物识别为昆虫而不是其他叶子、树枝、雨水等杂物,于是合拢叶片。

OS中,给每个页面维护一个计数器,当某个页面被写入多次后,就把这个很脏的页面写入到下一低级存储介质,避免大量不同步、不安全状态。

当合拢叶片入后侵物仍在挣扎,就会开始挤压,分泌化学物质溶解昆虫,这是一种双保险机制,保存自己的能量和时间。

​在cache和内存都建立独立的计数器,最小粒度不仅是单个页面也可以是数据块,每层的阈值也可以不一样,通过层层响应机制实现各级存储介质的数据更新。

image.png

image.png

image.png

image.png

image.png