У меня есть модуль 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