|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Vadim Goncharov 2:5020/400 16 Sep 2005 18:20:39 To : Slawa Olhovchenkov Subject : Re: malloc() overcommit bug -------------------------------------------------------------------------------- Hi Slawa Olhovchenkov! On Thu, 15 Sep 2005 19:54:20 +0400; Slawa Olhovchenkov wrote about 'malloc() overcommit bug': SO>>>>>>>>> Потому что память может исчезнуть в процессе. VG>>>>>>>> Подкрутить счетчик отданной процессам памяти, и не отдавать, если VG>>>>>>>> просит больше, чем осталось. SO>>>>>>> Ты кажется не слушал объяснений. VG>>>>>> Мы кажется говорим (и объяснения были) о несколько разных вещах. SO>>>>> Hет. Память-то общая. VG>>>> Ты не выпендривайся, ты пальцем покажи (с) SO>>> Пишем програмку алоцирующую мегабайт памяти. SO>>> Пускаем ее на машине с полугигом оперативки и без свопа. SO>>> Програма в свой мегабайт пишет единицы. SO>>> Все зашибись, да? VG>> Монстры, о которых шла речь, не форкаются, ибо десятки гигов. SO> Какая связь? Между резервированием памяти явно для одного процесса и дублированием при форке есть разница. SO>>> Теперь програма делает 1000 fork(). VG>> После 500 раза fork() должен вернуть ENOMEM, это здесь уже писали. SO> А я писал, что фигню в этом месте написали. Это должно быть как минимум переключабельно. В конце концов, почему та же солярка резервированием таки занимается? SO>>> Это законно, поскольку дальше она может сделать exec() на что-то SO>>> совсем совсем маленькое или вообще быстро завершиться. Более того, мы SO>>> не можем ничего запустить паралельно не сделав перед этим fork(). Hо SO>>> вместо этого каждая копия начинает писать случайные данные в свой SO>>> мегабайт. В некоторый момент механизм copy-on-write обломается и копии SO>>> начнут слетать с SEGFAULT. VG>> Емнип, есть разные версии форка, тот же vfork() & rfork(). SO> Они в этом месте не различаются. Hу прям там. vfork() предназначен для exec() и памяти не копирует. VG>> Однако, кто мешает при форке (да и malloc) _резервировать_ страницы VG>> для последующего copy-on-write? SO> А потому что тогда тебе никакого свопа не хватит для современного софта, SO> поскольку он весь расчитывает на то, что по copy-on-write потребляться SO> будет только нужный объем памяти. Примеры? -- WBR, Vadim Goncharov. ICQ#166852181 mailto:vadim_nuclight@mail.ru [Moderator of RU.ANTI-ECOLOGY][FreeBSD][http://antigreen.org][LJ:/nuclight] --- slrn/0.9.8.1 on FreeBSD 4.11/i386 * Origin: Nuclear Lightning @ Tomsk, TPU AVTF Hostel (2:5020/400@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/103598c127c79.html, оценка из 5, голосов 10
|