Проблеммы со swap-файлом(не используется)(FreeBSD 5.4), Максим Кудимов, 28-Сен-06, 10:50 [смотреть все]Суть проблеммы наверно более широкая,чем просто программирование. Имеем относительно хороший компьютер - оперативная память 1Gb, ОС - FreeBSD 5.4, для swap выделен раздел размером 2Gb. Пишу программу на C++. пока программа помещается в оперативной памяти - все нормально, но как только она пытается выделить себе еще памяти, за пределами оперативной, - вылетает с исключением Core Dump. Таким образом получается, что программа не может частично находится в оперативной памяти, а частично в swap? Можно ли решить данную проблемму? Причем проблемма касается не только нашей программы. Если, допустим, mysql также выделит память, то он тоже вылетает с исключением Core Dump. |
- Проблеммы со swap-файлом(не используется)(FreeBSD 5.4), levsha, 11:14 , 28-Сен-06 (1)
Выполните команду limits , обратите внимание на значение datasize
- Проблеммы со swap-файлом(не используется)(FreeBSD 5.4), Максим Кудимов, 12:07 , 28-Сен-06 (2)
>Выполните команду limits , обратите внимание на значение datasize Resource limits (current): cputime infinity secs filesize infinity kb datasize 524288 kb stacksize 65536 kb coredumpsize infinity kb memoryuse infinity kb memorylocked infinity kb maxprocesses 5547 openfiles 11095 sbsize infinity bytes vmemoryuse infinity kb
мне кажется что это не зависит от размера памяти. Программа рушится до 500 МБ. как только программе нужно больше памяти чем есть в оперативке - вылетает (например php). может поможет показания top:
last pid: 12027; load averages: 0.06, 0.02, 0.00 up 3+00:04:02 12:05:02 51 processes: 1 running, 50 sleeping CPU states: 4.3% user, 0.0% nice, 2.3% system, 0.0% interrupt, 93.4% idle Mem: 528M Active, 159M Inact, 155M Wired, 47M Cache, 110M Buf, 92M Free Swap: 2048M Total, 304K Used, 2048M Free
- Проблеммы со swap-файлом(не используется)(FreeBSD 5.4), DeadLoco, 14:53 , 28-Сен-06 (3)
>>Выполните команду limits , обратите внимание на значение datasize > datasize 524288 kb >мне кажется что это не зависит от размера памяти. Программа рушится до 500 МБ. Вот это и есть ограничение на размер памяти, отводимой под данные процесса. Побороть можно путем перекомпиляции ядры со следующими строками в конфиге:
options MAXDSIZ="(2048*1024*1024)" options MAXSSIZ="(2048*1024*1024)" options DFLDSIZ="(2048*1024*1024)" MAXDSIZ - как раз и есть максимальный размер сегмента данных, в данном случае - 2Гб.
- Проблеммы со swap-файлом(не используется)(FreeBSD 5.4), Максим Кудимов, 15:15 , 28-Сен-06 (4)
Спасибо большое! в самом деле core damp вылетает при попытке выделить больше 500 МБ. я думал, что проверяли такой вариант. - Проблеммы со swap-файлом(не используется)(FreeBSD 5.4), VAK, 21:50 , 28-Сен-06 (5)
>>>Выполните команду limits , обратите внимание на значение datasize > >> datasize 524288 kb > >>мне кажется что это не зависит от размера памяти. Программа рушится до 500 МБ. > > >Вот это и есть ограничение на размер памяти, отводимой под данные процесса. >Побороть можно путем перекомпиляции ядры со следующими строками в конфиге: > >options > MAXDSIZ="(2048*1024*1024)" >options > MAXSSIZ="(2048*1024*1024)" >options > DFLDSIZ="(2048*1024*1024)" > > >MAXDSIZ - как раз и есть максимальный размер сегмента данных, в данном >случае - 2Гб. это можно сделать и без перекомпиляции ядра нужно в loader.conf добавть, например, kern.maxdsiz="1000M" в версиях 5.4 и новее - должно работать
|