如果用户空间程序需要它,我想澄清是否会释放(或大部分释放)Linux平板内存。
我注意到我的一个 Linux 系统有大量内存分配给“slab”:
(来自平板)
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
834768 834766 99% 0.94K 24552 34 785664K ext4_inode_cache
694092 354151 51% 0.19K 33052 21 132208K dentry
Run Code Online (Sandbox Code Playgroud)
我意识到如果我想使用 (sync; echo 3 > /proc/sys/vm/drop_caches) 我可以手动清除它,但是我需要还是 Linux 在需要时自行释放它?
简而言之,是的,内核将释放slab,以便为用户空间应用程序腾出空间。
您所指的“slab 内存”是内核使用减少 RAM 碎片的技术分配的内存。它不是为某些额外的特殊数据保留的某种类型的内存或空间。它从内核版本 2.2 起就可用。诀窍是分配固定大小的内存块以供适合这些块的对象使用,并在需要时管理整个块的分配和释放。
Linux 将尽可能多的数据保留在 RAM 中以加快访问速度。inode 和 dentry 缓存可以加快对文件系统的访问速度。如果您有极其激进的进程,Linux 由于试图占用过多内存而将其杀死,那么调整缓存清理参数可能会有所帮助,但可能性不大。有关此类信息,请参阅vfs_cache_Pressure文档。
归档时间: |
|
查看次数: |
4033 次 |
最近记录: |