The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Проблеммы со swap-файлом(не используется)(FreeBSD 5.4)"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Проблеммы со swap-файлом(не используется)(FreeBSD 5.4)"  
Сообщение от Максим Кудимов email on 28-Сен-06, 10:50 
Суть проблеммы наверно более широкая,чем просто программирование.
Имеем относительно хороший компьютер - оперативная память 1Gb, ОС - FreeBSD 5.4, для swap выделен раздел размером 2Gb.
Пишу программу на C++. пока программа помещается в оперативной памяти - все нормально,
но как только она пытается выделить себе еще памяти, за пределами оперативной, - вылетает с исключением Core Dump.
Таким образом получается, что программа не может частично находится в оперативной памяти, а частично в swap?
Можно ли решить данную проблемму?
Причем проблемма касается не только нашей программы. Если, допустим, mysql также выделит память, то он тоже вылетает с исключением Core Dump.
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Проблеммы со swap-файлом(не используется)(FreeBSD 5.4)"  
Сообщение от levsha email(??) on 28-Сен-06, 11:14 
Выполните команду limits , обратите внимание на значение datasize
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Проблеммы со swap-файлом(не используется)(FreeBSD 5.4)"  
Сообщение от Максим Кудимов email on 28-Сен-06, 12:07 
>Выполните команду 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

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "Проблеммы со swap-файлом(не используется)(FreeBSD 5.4)"  
Сообщение от DeadLoco (ok) on 28-Сен-06, 14:53 
>>Выполните команду limits , обратите внимание на значение datasize

>  datasize          524288 kb

>мне кажется что это не зависит от размера памяти. Программа рушится до 500 МБ.


Вот это и есть ограничение на размер памяти, отводимой под данные процесса. Побороть можно путем перекомпиляции ядры со следующими строками в конфиге:

options             MAXDSIZ="(2048*1024*1024)"
options             MAXSSIZ="(2048*1024*1024)"
options             DFLDSIZ="(2048*1024*1024)"


MAXDSIZ - как раз и есть максимальный размер сегмента данных, в данном случае - 2Гб.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "Проблеммы со swap-файлом(не используется)(FreeBSD 5.4)"  
Сообщение от Максим Кудимов email on 28-Сен-06, 15:15 
Спасибо большое!
в самом деле core damp вылетает при попытке выделить больше 500 МБ. я думал, что проверяли такой вариант.
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "Проблеммы со swap-файлом(не используется)(FreeBSD 5.4)"  
Сообщение от VAK on 28-Сен-06, 21:50 
>>>Выполните команду 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 и новее - должно работать

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру