我有一个带有embedded-linux的路由器,内核版本为2.4.22。我知道它的旧版本,但我必须处理它。以下是free
盒子上的命令输出,
[8300002902-3]调试>免费
total used free shared buffers Mem: 128104 123928 4176 0 2164 Swap: 0 0 0 Total: 128104 123928 4176
现在我的问题是,每当它执行一些命令并使用>
运算符将其输出重定向到某个文件时,缓冲区大小都会增加4KB,即使我rm -rf
再次使用缓冲区删除相同的文件也会增加4KB。因此,当我的缓冲区大小达到接近5.3MB的大小时,就会出现 OOM 问题,因为您可以看到我只有 128MB RAM 可用。我认为内核没有回收缓冲区空间。请告诉我可以做些什么来摆脱这个问题。我已经研究了设置drop_caches中的值,/proc/sys/vm
但是这个命令在我的内核版本中不可用。
这是 proc/meminfo 转储可能会有所帮助。
[8300002902-3] 调试> cat /proc/meminfo
total: used: free: shared: buffers: cached:
Mem: 131178496 126545920 4632576 0 2211840 54927360
Swap: 0 0 0
MemTotal: 128104 kB
MemFree: 4524 kB
MemShared: 0 kB
Buffers: 2160 kB
Cached: 53640 kB
SwapCached: 0 kB
Active: 66628 kB
Inactive: 36692 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 128104 kB
LowFree: 4524 kB
SwapTotal: 0 kB
SwapFree: 0 kB