The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Проблеммы со 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 и новее - должно работать




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

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