Назад | Перейти на главную страницу

фрагментация памяти на nas

У меня есть модуль qnap nas, на котором я пытался создать дополнительную цель iscsi, и процесс создания не удался. Я не пытаюсь делать то, что не делал на других идентичных устройствах, но этот работает дольше.

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-машине, которая мало что делает, кроме блокирования ввода-вывода.

# 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 

ай. Это свидетельствует о серьезной фрагментации памяти, при которой практически отсутствуют блоки размером более 8 КБ. Есть ли какой-либо способ решить проблему фрагментации памяти (временное сокращение памяти, выделенной для буферов или иным образом), кроме перезапуска компьютера, процесса, который будет чрезвычайно неудобным? Кроме того, вероятно, что добавление дополнительной памяти к машине, используемой таким образом, поможет решить эту конкретную проблему, очевидно, что есть и другие преимущества обновления памяти.

Попробуйте выпустить sync; echo 3 > /proc/sys/vm/drop_caches. Это освободит всю кэшированную / буферизованную память.

Если это не сработает, вы можете попробовать сжать / дефрагментировать память, выполнив следующую команду: echo 1 > /proc/sys/vm/compact_memory