哪个更好?高缓存还是低缓存?它们之间到底有什么区别?
答案1
总是——越多越好。
如果你谈论的是 CPU 缓存,维基百科说得最好-
CPU 缓存是计算机中央处理器用来减少访问内存平均时间的缓存。缓存是一种较小但较快的内存,用于存储最常用主内存位置的数据副本。只要大多数内存访问都是缓存的内存位置,内存访问的平均延迟就会更接近缓存延迟,而不是主内存延迟。
答案2
您的问题中关于高缓存与低缓存的措辞并不常见且含糊不清。
缓存的最初目的是加速磁盘到 RAM 的读取交互,以避免 CPU 进程饥饿,使它们在访问请求的数据之前处于空闲状态。
解释:
- [1] 缓存的位置/类型,或
- [2] 缓存量。
对于位置/类型,您有
板载 CPU:对于多 CPU 芯片,您会分配一些内存供所有 CPU 共享,并且会分配一些内存供每个 CPU 专用。除非您正在进行超级计算,否则我的理解是最好最大化共享内存部分。
操作系统共享内存:有未保留的内存,可以根据需要分配给任何新进程。操作系统为基于 RAM 的缓存保留了内存(您可能会看到对段交换和页面交换的引用)。虚拟内存标题下有逻辑内存分配,其中可访问内存的全部范围是物理 RAM 中段的组合(高内存),其余部分则分配给一个或多个物理磁盘分区上通常保留的空间。内存是按进程分配的。内存是按设备分配的。如果磁盘/RAM VM 的比率与 CPU 数据吞吐量相比过高,系统的性能就会受到影响。因此,目前的趋势是使用 RAM 磁盘来提供接近 RAM 的性能,而不是速度慢得多的硬盘驱动器。 使用 RAM 磁盘并不意味着不需要仔细选择要调整的内核参数。
板载磁盘:缓存主要用于处理设备读取请求,但写入缓存用于将写入的数据保存在“磁盘内部 RAM”中,磁盘本身会先扫描这些数据,然后再将其写入驱动器的盘片以满足请求。作为从盘片到计算机接口的中间人,制造商将板载内存放在缓冲区中,并根据最旧的访问进行清除,以减少对同一数据的多次物理访问,从而为新镜像腾出空间。我不知道制造商是否为硬盘驱动器板载缓存提供可调参数。
对于缓存量,
- 如果缓存太多(类似于 SWAP 太多),系统(操作系统或硬件)将需要更长的时间来完成读取请求,浪费时间在缓存中查找数据,然后再将其努力重定向到实际设备以保证满足请求。
- 有许多内核参数可以在操作系统级别进行调整以用于缓存;我建议您在决定更改哪些参数以及分配哪些值之前,检查所有与缓存相关的参数。
一些有用的参考资料:
- https://www.kernel.org/doc/html/latest/vm/highmem.html
- https://www.kernel.org/doc/html/latest/admin-guide/device-mapper/cache.html?highlight=cache
- https://www.thegeekdiary.com/how-to-query-and-modify-kernel-parameters-using-sysctl-immediately-and-persistently-in-centos-rhel/
- https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/kernel-parameters.txt
- https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html
- https://developer.ibm.com/technologies/linux/articles/l-config/
- https://gist.github.com/yegorg/36cf9710e8ef50fa07571db0f4b981f9
- https://developer.ridgerun.com/wiki/index.php/High_performance_SD_card_tuning_using_the_EXT4_file_system