LINUX.ORG.RU

Память заканчивается?


0

1

64-bit kernel, 4 ГБ ОЗУ, 5 ГБ свопа. Стоит позапускать приложений побольше, но не сильно много, гектара на 3. Через время перестают запускаться программы под предлогом что malloc не может сработать, памяти нет. Куда копать? Раньше такого не было. Сижу на своем старом привычном ядре

★★★★★

Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от anonymous

Пока проблемы нет, перезагрузился. Когда появится, напишу

vertexua ★★★★★
() автор топика
Ответ на: комментарий от anonymous
MemTotal:        3950208 kB
MemFree:           72532 kB
Buffers:          282212 kB
Cached:          1202200 kB
SwapCached:          124 kB
Active:          2321864 kB
Inactive:        1188628 kB
Active(anon):    1742840 kB
Inactive(anon):   484784 kB
Active(file):     579024 kB
Inactive(file):   703844 kB
Unevictable:          48 kB
Mlocked:              48 kB
SwapTotal:       5858300 kB
SwapFree:        5858176 kB
Dirty:              3212 kB
Writeback:             0 kB
AnonPages:       2026068 kB
Mapped:           185132 kB
Shmem:            201544 kB
Slab:             285340 kB
SReclaimable:     250312 kB
SUnreclaim:        35028 kB
KernelStack:        4800 kB
PageTables:        27104 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     9018464 kB
Committed_AS:    7930080 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      357288 kB
VmallocChunk:   34359369016 kB
DirectMap4k:        7836 kB
DirectMap2M:     4098048 kB
vertexua ★★★★★
() автор топика
Ответ на: комментарий от vertexua
vertexua@vxcomp ~/IdeaProjects/globalChat $ mvn jetty:run -DjettyPort=8082
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

Занято 2.3 ГБ из 4 ГБ. Также 6 ГБ свопа

vertexua ★★★★★
() автор топика
Ответ на: комментарий от vertexua
vertexua@vxcomp ~/IdeaProjects/globalChat $ MAVEN_OPTS="-Xmx1024m" mvn jetty:run -DjettyPort=8082
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
vertexua@vxcomp ~/IdeaProjects/globalChat $ MAVEN_OPTS="-Xmx256m" mvn jetty:run -DjettyPort=8082
[WARNING] 
[WARNING] Some problems were encountered while building the effective settings
[WARNING] Failed to use environment variables for interpolation: Cannot run program "env": java.io.IOException: error=12, Cannot allocate memory @ 
[WARNING] 
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building GlobalChat 1.0
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] >>> jetty-maven-plugin:8.0.0.M0:run (default-cli) @ global-chat-webapp >>>
[INFO] 
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ global-chat-webapp ---
^Cvertexua@vxcomp ~/IdeaProjects/globalChat $ MAVEN_OPTS="-Xmx128m" mvn jetty:run -DjettyPort=8082
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building GlobalChat 1.0
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] >>> jetty-maven-plugin:8.0.0.M0:run (default-cli) @ global-chat-webapp >>>
[INFO] 
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ global-chat-webapp ---                                      

1. Всеобщее падение

2. Что-то внутри не сработало

3. Успех

vertexua ★★★★★
() автор топика
Ответ на: комментарий от Komintern

Я же написал. Занято 2.3 ГБ из 4 ОЗУ + 6 свопа

vertexua ★★★★★
() автор топика

Написал небольшой тест выделения памяти. Нормально выделяет до 2 ГБ. Но процессы, emerge, firefox, java, chrome, skype могут не запускаться из-за памяти если запущено много чего

vertexua ★★★★★
() автор топика
Ответ на: комментарий от vertexua

Но опять же «много чего», когда при этом 7ГБ свободно

vertexua ★★★★★
() автор топика
Ответ на: комментарий от vertexua

java? Она любит shared memory, это отдельная статья. В выводе free она считается кэшем/буфером, поэтому пользователь может считать, что всё свободно.

Посмотри в ipcs -u количество разрешённых и потреблённых под shared memory страниц.

Размер страницы

getconf PAGE_SIZE

router ★★★★★
()
Ответ на: комментарий от router
vertexua@vxcomp ~ $ ipcs -u

------ Стан спільної пам'яті --------
segments allocated 4
pages allocated 1282
pages resident  1271
pages swapped   0
Swap performance: 0 attempts	 0 successes

------ Стан семафору --------
використано масивів = 0
виділено семафорів = 0

------ Messages Status --------
виділено черг = 0
використано заголовків = 0
використано простору = 0 байт

vertexua@vxcomp ~ $ getconf PAGE_SIZE
4096

looks good

vertexua ★★★★★
() автор топика
Ответ на: комментарий от vertexua

Вот ещё что вспомнил. Если ядро достаточно новое, то простой скрипт покажет, что именно ест своп. Это, понятно, не панацея, но поможет сделать выводы

#!/bin/bash

SUM=0
OVERALL=0

for dir in $(find /proc -maxdepth 1 -type d -name '[0-9]*'); do
    PID=$( echo $dir | cut -d '/' -f 3);
    PROGNAME=$(ps -p $PID -o comm --no-headers)
    for swap in $(grep Swap $dir/smaps 2>/dev/null | awk '{ print $2; }');do
        let SUM=$SUM+$swap
    done
    if [ "$SUM"  != "0" ]; then
        echo "PID=$PID - Swap used:$SUM - ( $PROGNAME )"
    fi
    let OVERALL=$OVERALL+$SUM
    SUM=0
done
echo "Overall swap used: $OVERALL"

Как легко видеть, информация берётся из /proc/<pid>/smaps

router ★★★★★
()
Ответ на: комментарий от vertexua

Тогда я бы сказал, что память используется ядром ( kernel space ). Случайно не виртуалка?

router ★★★★★
()

Стоит позапускать приложений побольше, но не сильно много, гектара на 3. Через время перестают запускаться программы под предлогом что malloc не может сработать, памяти нет.

Блиин, я тормоз. Включаю режим телепата: ты игрался с параметрами sysctl и поменял стратегию overcommit ?

sudo sysctl -a 2>/dev/null | grep overcommit

router ★★★★★
()
Ответ на: комментарий от router

Я только что об этом подумал, один раз себе такое сделал...

deterok ★★★★★
()
Ответ на: комментарий от router

Ковырялся.

vertexua@vxcomp ~ $ sudo sysctl -a 2>/dev/null | grep overcommit
Пароль:
vm.overcommit_memory = 2
vm.overcommit_ratio = 80

Какие параметры лучше поставить?

vertexua ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.