我有一个qnap nas单元,我试图创build一个额外的iscsi目标,并且创build过程失败。 我不想在其他相同的单位上做任何事情,但是这个已经跑了更长的时间了。
ssh进去看看
dmesg包含许多其他的事情:
[3431220.016334] SLAB: Unable to allocate memory on node 0 (gfp=0xd0) [3431220.016335] cache: kmalloc-65536, object size: 65536, order: 4 [3431220.016341] node 0: slabs: 12/12, objs: 12/12, free: 0
好的,我们得到了问题的原因。
# cat /proc/meminfo MemTotal: 3939760 kB MemFree: 190480 kB Buffers: 3212476 kB Cached: 188868 kB SwapCached: 48 kB
所以所有的内存分配给缓冲区。 在一台Linux机器上,除了块IO之外几乎没有什么奇怪的
# cat /proc/buddyinfo Node 0, zone DMA 8 2 1 1 1 1 1 1 2 2 2 Node 0, zone DMA32 22614 389 0 1 1 2 3 1 0 0 0 Node 0, zone Normal 12150 7683 0 2 5 2 1 1 0 0 0
哎哟。 这显示了一些严重的内存碎片,几乎没有可用的块大于8K。 有没有办法清除内存碎片问题(临时减less分配给缓冲区或其他内存的内存)没有重新启动机器,这一过程将是非常不方便的? 另外,像这样的机器增加更多的内存可能会帮助解决这个问题,升级内存显然还有其他的好处。
尝试发出sync; echo 3 > /proc/sys/vm/drop_caches sync; echo 3 > /proc/sys/vm/drop_caches 。 这将释放所有caching/缓冲的内存。
如果这不起作用,可以尝试压缩/碎片整理发出以下命令的内存: echo 1 > /proc/sys/vm/compact_memory