Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
YuZeR Гость
|
Добавлено: Пт Май 10 2002 08:58 Заголовок сообщения: Linux swap |
|
|
Подскажите, какой величины должен быть раздел для Linux swap файла? Можно ли его поместить в отдельный раздел, а не в EXTENDED DOS? |
|
Вернуться к началу |
|
|
and3008
Зарегистрирован: 12.10.2001 Сообщения: 14893 Откуда: Н.Новгород
|
Добавлено: Пт Май 10 2002 09:02 Заголовок сообщения: Re: Linux swap |
|
|
Размер свопа зависит от наличия ОЗУ и кол-ва одновременно запускаемых прог.
Я обычно ставлю 100 мег. Делать больше смысла нет, т.к. начнутся дикие тормоза.
Если ОЗУ 256 и более, то своп как правило и не нужен. Он даже вреден. |
|
Вернуться к началу |
|
|
Dmitry.Karpov http://www. Гость
|
Добавлено: Пт Май 10 2002 11:42 Заголовок сообщения: Swap - платформенно-независимые соображения |
|
|
Есть много соображений по поводу размера и размещения swap-области.
Во FreeBSD свопинг может производиться как в отдельный раздел (который тоже файл), так и в обычный файл. При этом swap-области подключаются в два приема - сначала до монтирования файловых систем монтируются swap-разделы, а после монтирования файловых систем (программа mount тоже может свопиться) монтируются swap-файлы. W'NT/2k свопятся только в обычный файл, в раздел они свопиться не умеют. Насчет Linux не знаю.
Очевидно, что свопинг в раздел эффективнее, чем в файл - отсутствуют преобразования адресов, производимые в драйвере файловой системы. (Oracle SQL-сервер тоже умеет работать как в файле, так и в разделе; впрочем, он умеет работать вообще без операционной системы.)
В отличие от кэш-памяти 1-го и 2-го уровня (для машин на базе 486 и Pentium-I/MMX эти кэши назывались "внутренний" и "вншний", а в Pentium-Pro и Pentium-II/III оба кэша внутри процессора) объем физической оперативной памяти складывается с объемом swap-областей (а кэш-память находится внутри пространства адресов кэшируемой памяти). Но кроме того, код запущенных процессов при нехватке места не сбрасывается в swap, а просто выкидывается из оперативной памяти, а при необходимости подкачивается из запускаемых файлов.
Размер swap-области д.б. достаточен для запуска всех необходимых процессов, поэтому для сервера лучше создать ее с запасом, особенно если диск достаточных размеров (5% емкости диска можно пожертвовать без угрызений совести) - там не будет человека, способного оперативно принять решение о выгрузке не очень важных задач, поэтому пусть они "отдохнут" в свопе (особенно это относится к серверам DHCP, DNS и т.п.). Из эмпирических соображений считается, что при размере swap-области более чем в два раза превышающем объем физической оперативной памяти либо swap-память будет простаивать (останется неиспользуемой), либо при ее активном использовании скорость работы уменьшится до неприличия. Впрочем, размер swap-области желательно задавать с расчетом на возможное наращивание физической оперативной памяти (вроде, опять наметились тенденции к снижению цен). А что делать, если эти два требования противоречат друг другу, т.е. для запуска всех задач требуется больше, чем тройной объем физической оперативной памяти? Очевидно, необходимо срочно докупить DIMM'ов, иначе головки протрут плстины жесткого диска до дыр! |
|
Вернуться к началу |
|
|
and3008
Зарегистрирован: 12.10.2001 Сообщения: 14893 Откуда: Н.Новгород
|
Добавлено: Пт Май 10 2002 13:18 Заголовок сообщения: Поправочки (+) |
|
|
В своп выкидавается не весь код, а некоторая страница памяти. В системе есть специальный менеджер памяти, которые следит за ее использованием. Неиспользуемые некоторое время страницы могут быть выброшены в своп. Если памяти не хватает, то в своп улетают именно наименее используемые куски. Когда нужен кусок памяти, а он находится в свопе, и ОЗУ нету, то менеджер опять глядит кого можно выкинуть и на его место подгружает запрошенный кусок.
Если интересно, то расскажу про Линух. Линух свопирует в раздел диска. Своп может быть размещен на нескольких разделах (ессено на разных диках тоже). Кол-во разделов ограничено кажется 4. Может чуть больше.
В ядре 2.4.Х очень сильно переработали менеджер памяти. Особенно в части выкидывания кого-либо в своп. Говорят работает более эффективно, чем на старых ядрах. |
|
Вернуться к началу |
|
|
Dmitry.Karpov http://www. Гость
|
Добавлено: Пт Май 10 2002 16:27 Заголовок сообщения: Про свопинг кода |
|
|
Разумеется, память сбрасывается в своп постранично (в 16-битных Windowns, ориентированных на процессоры 086 и 286, даже на поцессорах 386 память распределялась сегментами и свопилась так же). Но соображения ядра системы при свопинге м.б. самые разные - например, предпочтительно скидывать в своп страницы, принадлежащие одному процессу.
А я говорил о том, что код только читается из запускаемого файла - он не записывается в swap-области и не занимает там места даже когда не используется (т.е. реальный объем swap-области больше, чем мы выделяем). |
|
Вернуться к началу |
|
|
and3008
Зарегистрирован: 12.10.2001 Сообщения: 14893 Откуда: Н.Новгород
|
Добавлено: Пт Май 10 2002 17:09 Заголовок сообщения: Да я просто кое-что прояснил. Вот и все (+) |
|
|
- |
|
Вернуться к началу |
|
|
YuZeR Гость
|
Добавлено: Сб Май 11 2002 08:36 Заголовок сообщения: Re: Linux swap |
|
|
>Если ОЗУ 256 и более, то своп как правило и не нужен. Он даже вреден. Можно ли вообще обойтись без свопа (не создавать этот раздел в принципе)? Чем это грозит? |
|
Вернуться к началу |
|
|
ilyasov Гость
|
Добавлено: Вт Май 14 2002 14:03 Заголовок сообщения: свопинг и пейджинг |
|
|
В системах обычно присутствуют два различных по сути механизма выброса областей из памяти на диск. Первый механизм -постраничный выброс (пейджинг) -используется при не слишком частых обращениях к загрузке-выгрузке страниц памяти. Второй механизм -свопинг (самый старый способ высвобождения места), в этом случае выбрасываются из памяти целиком образы процессов. Свопинг используется тогда, когда эффективность страничного обмена падает до некоторой, наперед заданной величины. Кстати, на архитектурах без аппаратных прерываний по несуществующим адресам единственным возможным механизмом был свопинг. На счет размера swap раздела -выбирать следует исходя из нагрузки на машину. Самый верный путь -создать раздел с возможностью расширения на случай нехватки места. Считать потребности в памяти системы -дело нудное, проще пойти по пути 2* на размер занятой памяти в режиме средней загрузки сервера). |
|
Вернуться к началу |
|
|
|