计算机组成 -- 局部性原理
局部性原理
- 局部性原理:时间局部性(temporal locality)+空间局部性(spatial locality)
- 时间局部性:如果一个数据被访问了,在短时间内还会被再次访问
- 空间局部性:如果一个数据被访问了,和它相邻的数据也很快会被访问
亚马逊的商品
假设:总共6亿商品,每件商品需要4MB的存储空间,总共需要2400TB的数据存储
存储成本
- 如果所有数据都放在内存里面,需要3600万美元
- $3600 = \frac{2400TB}{1MB}×0.015$
- 如果只在内存里存放前1%的热门商品,其余的放在HDD上,存储成本可以下降为45.6万美元,即原来成本的1.3%
- $45.5 ≈ 3600 \times 0.01+3600 \times 0.99 \times \frac{0.00004}{0.015}$
时间局部性
- 时间局部性:LRU(Least Recently Used)缓存算法
- 热门商品被访问得多,就会始终被保存在内存里,而冷门商品被访问得少,就只存放在HDD硬盘上
- 越是热门的商品,越容易在内存中找到,能更好地利用内存的随机访问性能
- 假设日活为1亿,活跃用户每人每天访问100个商品,每秒访问的商品数量为12万次(**$\frac{10^{8} \times 100}{24 \times 3600 \times 10000}$**)
- 缓存命中率
- 内存的随机访问请求需要100ns,极限情况下,内存可以支持每秒1000W次的随机访问
- 使用24TB的内存,假设每根内存条8GB,即3000条内存,可以支持每秒300亿次访问
- 如果数据没有命中内存,那么对应的数据请求需要访问到HDD磁盘
- HDD硬盘的随机访问请求需要10ms,即只能支撑每秒100次的随机访问
- 2400TB的数据,假设每块磁盘为4TB,有600块磁盘,就能支撑每秒6万次的随机访问
- 如果所有的访问请求,都直接到了HDD磁盘,HDD磁盘是支撑不了这个压力(至少需要**50%**的缓存命中率)
- 替代方案:添加更多的HDD、将HDD替换成SSD
参考资料
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.