小编Wim*_*Wim的帖子

限制 Linux 中缓冲区缓存的大小

有没有办法告诉 Linux 内核只将一定比例的内存用于缓冲区缓存?我知道/proc/sys/vm/drop_caches可以用来临时清除缓存,但是否有任何永久设置可以防止它增长到超过主内存的 50%?

我想这样做的原因是,我有一台运行 Ceph OSD 的服务器,它不断地从磁盘提供数据,并设法在几个小时内用完整个物理内存作为缓冲区缓存。同时,我需要运行将分配大量(数十 GB)物理内存的应用程序。与流行的看法相反(请参阅关于几乎所有有关缓冲区缓存的问题的建议),通过丢弃干净的缓存条目来自动释放内存不是即时的:当缓冲区缓存已满时,启动我的应用程序可能需要长达一分钟的时间( *),而在清除缓存后(使用echo 3 > /proc/sys/vm/drop_caches),相同的应用程序几乎立即启动。

(*) 根据 Vtune 在一个名为pageblock_pfn_to_page. 这个功能似乎与查找大页面所需的内存压缩有关,这让我相信实际上是碎片化的问题。

buffer linux-kernel

41
推荐指数
3
解决办法
7万
查看次数

标签 统计

buffer ×1

linux-kernel ×1