Я никогда ссд не поставлю себе. Лучше тэр хдд чем сто мег ссд. Если мой ворох контента погибнет, погибну и я. А с ссд станется.
Super_inoy
> переносить своп на хдд извращение, отрубать полностью - в зависимости от задач и имеющейся оперативки.
Отключать своп смысла нет и вредно.
1. Когда много оперативки, своп используется минимально, считай никак.
2. Даже когда используется, на скорость это не влияет (уж точно не замедляет), лишних звуков тоже нет - SSD бесшумные.
3. При 8-16 Гб ОЗУ отключение свопа равносильно отключению одного-пары гигабайт оперативки. Заплаченные за них деньги ― на ветер.
Программы начинают падать с ошибками о нехватке памяти раньше, чем место в ОЗУ реально заканчивается. Процессы резервируют у ОС память большими кусками, с запасом, больше, чем реально используют. Та часть зарезервированного, которая пока не используется (процесс туда ни разу не читал и не писал), ОЗУ не расходует. Виртуально страницы памяти выделены, но ни в ОЗУ, ни в свопе не хранятся. ОС просто гарантирует, что всем страницам виртуальной памяти, которым может потребоваться физическое представление, она сможет его предоставить в ОЗУ или свопе.
В результате, грубо говоря, при включенном свопе все процессы суммарно могут запросить у ОС 18 Гб виртуальной памяти, при этом реально использовать только 15, и 16 Гб физического ОЗУ им вполне хватит. При выключенном свопе процессы не могут запросить у ОС виртуальной памяти больше, чем есть физической.
Я видел удивлённые вопросы, типа: «У меня 8 Гб ОЗУ, по графику в Диспетчере задач использовано только 7 Гб, а Window ругается про нехватку виртуальной памяти, и при попытке открыть в Хроме 51-ю закладку он падает». В реальности оказывается, что виртуальной памяти к этому моменту уже выделено 7,9 Гб и предоставить дополнительные 200 Мб ОС не может.
alexzzzz
> Программы начинают падать с ошибками о нехватке памяти раньше, чем место в ОЗУ
> реально заканчивается.
конечно, но если тебе критичны лаги - то падение процесса лучше(можно либо поубивать другие процессы и запустить этот, либо докинуть оперативки), чем микрофризы. Такие задачи бывают.
alexzzzz
> 3. При 8-16 Гб ОЗУ отключение свопа равносильно отключению одного-пары гигабайт
> оперативки.
12-24 :) но это не суть. В большинстве задач отключать своп действительно нет смысла, при условии что SSD имеет хоть какой-то адектваный ресурс.
alexzzzz
> 2. Даже когда используется, на скорость это не влияет (уж точно не замедляет)
Вообще-то замедляет, в сотни раз, когда действительно используется, а HDD своп - в десятки тысяч.
> чем микрофризы
Стриминг в 4k/60 fps с того же железа, на котором игрушка играется?
Super_inoy
> Вообще-то замедляет, в сотни раз, когда действительно используется, а HDD своп - в десятки тысяч.
Когда в сотни раз - это надо ОЗУ добавлять, а не своп выключать. Тем более что отключение свопа фактически равнозначно отключению части ОЗУ, которого и так не хватало.
Когда же есть запас по памяти, Windows может (не факт что в конкретном опыте будет) использовать своп, чтобы скинуть туда сто лет не используемые страницы памяти из modified-пула и перевести их в standby-пул. Т.е. если раньше данные хранились только в ОЗУ, то после записи в своп хранятся и в ОЗУ, и в свопе. Процесс записи в своп при этом идёт с фоновым приоритетом, когда накопитель ничем другим не занят, хрен ты его заметишь. Делается это для того, чтобы при возникшей необходимости копию данных в ОЗУ можно было мгновенно перезатереть чем-нибудь более полезным, не тратя время на запись в своп уже с явно не фоновым приоритетом - тогда и начнутся фризы.
Если памяти хоть залейся, Windows своп-файл вообще не трогает.
Super_inoy
> падение процесса лучше
Падение процесса - это не самый плохой исход при ошибке выделения памяти. Такие ошибки никто корректно не обрабатывает, происходить вообще может что угодно и во множестве процессов. Теоретически правильное поведение в этом случае - это падение ОС в BSOD.
alexzzzz
> Теоретически правильное поведение в этом случае - это падение ОС в BSOD.
что это? менеджер ОС вполне себе видит сколько памяти сейчас зарезервированно - происходит запрос на резервирование который выходит за рамки физической - киляется процесс(который запрашивается, или если есть какие-то приоритеты важности - по этим приоритетам).
То что в винде это обрабатывается не так не значит что сделать это так концептуально нельзя и это неправильно.
alexzzzz
> Если памяти хоть залейся, Windows своп-файл вообще не трогает.
Да, но панимаишь, в критичных ко времени задачах падение даже ОС лучше чем периодически возникающий лаг. Просто потому что сразу указывает на проблему.
alexzzzz
> Стриминг в 4k/60 fps с того же железа, на котором игрушка играется?
Ну хз, а что тут в поперативку что-то упирается? Да и константная же задача +- по выделенной памяти.
alexzzzz
> не тратя время на запись в своп уже с явно не фоновым приоритетом - тогда и
> начнутся фризы.
Ну так да. Дальше-то что? Своп костыль, если тебе нужна рабочая система с непредсказуемыми задержками - пользуешься свопом, если стабильность менее важна чем задержки - не пользуешься.
Реал тайма конечно всё равно на винде не получить, но избавиться от очевидного кривущего костыля и приблизиться можно.
Super_inoy
> > Теоретически правильное поведение в этом случае - это падение ОС в BSOD.
> что это? менеджер ОС вполне себе видит сколько памяти сейчас зарезервированно -
> происходит запрос на резервирование который выходит за рамки физической -
> киляется процесс(который запрашивается, или если есть какие-то приоритеты
> важности - по этим приоритетам).
Windows не выбирает кого убивать, вообще не убивает процессы, которым не может выделить память. Возвращается ошибка с шансом её обработать, а процессы уже рушатся сами, потому что чаще не обрабатывают. Рушатся в самый неподходящий момент ― когда что-то активно делают, раз просили новую память. Насколько корректными остаются данные в различных файлах на диске ― вопрос открытый. Упасть может и сервис, которому приспичило проснуться, забрав с собой весь хост-процесс, внутри которого работают подобные ему сервисы.
> > Стриминг в 4k/60 fps с того же железа, на котором игрушка играется?
> Ну хз, а что тут в поперативку что-то упирается? Да и константная же задача +-
> по выделенной памяти.
Просто я не понимаю, о какого рода микрофризах идёт речь, как они выглядят и откуда они берутся, когда работающие процессы никто не блокирует. Какого они хотя бы порядка? Например, задержка в несколько миллисекунд вероятно способна провести к пропуску кадра, если система и так нагружена до предела, типа игрой + стримингом в высоком разрешении и высокой частотой кадров.
Вчера вечером гонял игрушку. По диспетчеру задач было «занято» в районе 8 Гб из 16. За два часа Windows 10 к файлу pagefile.sys даже не притронулась.
> > не тратя время на запись в своп уже с явно не фоновым приоритетом - тогда и
> > начнутся фризы.
> Ну так да. Дальше-то что?
Так бывает, когда недавно был дефицит ОЗУ. Положи своп на SSD и закрой для себя эту тему навсегда.
> Своп костыль, если тебе нужна рабочая система с непредсказуемыми задержками - пользуешься свопом, если стабильность менее важна чем задержки - не пользуешься.
Ну да. Большого запаса ОЗУ нет, своп отключен, часть ОЗУ забита ненужным говном, которое некуда выгрузить, а часть зарезервирована и никогда не будет использована ― в итоге вместо того чтобы закешировать в памяти что-нибудь полезное и регулярно используемое (например, таблицы файлов NTFS на 500..2000 Мб), ОС будет перечитывать их с диска. С предсказуемыми задержками в случае HDD.
alexzzzz
> Ну да. Большого запаса ОЗУ нет, своп отключен, часть ОЗУ забита ненужным
> говном, которое некуда выгрузить, а часть зарезервирована и никогда не будет
> использована ― в итоге вместо того чтобы закешировать в памяти что-нибудь
> полезное и регулярно используемое (например, таблицы файлов NTFS на 500..2000
> Мб), ОС будет перечитывать их с диска. С предсказуемыми задержками в случае
> HDD.
Я не предлагаю устраивать своп на HDD, я просто утверждаю что отключать своп на ССД вполне оправдано в некоторых случаях.
Это как экономит ресурс ССД так и делает работу компьютера более предсказуемой в плане задержек. Он либо валится либо работает с меньшим их количеством.
А если обвалился - идёшь в магазин и покупаешь ещё оперативки, либо не используешь его в данном юзкейсе.
P.S. задача в которой критичны задержки - например реалтаймовая обработка радиосигналов. Да, такое обычно не делают на железках с виндой, а если делают, то для тестов, но я видел и такое.
alexzzzz
> Windows не выбирает кого убивать, вообще не убивает процессы, которым не может
> выделить память.
Ну так это проблемы и кривота менеджера винды.
Super_inoy
> отключать своп на ССД вполне оправдано в некоторых случаях.
Вообще не оправдано, с нынешними ценами можно под своп купить отдельный SSD *trollface*
0iStalker
> Вообще не оправдано, с нынешними ценами можно под своп купить отдельный SSD
> *trollface*
И что? Ещё раз повторю - есть ситуации когда падение лучше чем фриз/лаг. И ССД значительно медленнее оперативки.
P.S. я тут может быть соберу комп в ближайшее время, если жаба не задушит. с 1024гб ССД и 32 гигами памяти. Своп вероятно вырублю(не факт, в моём случае не критично, так что если не забуду) :) и дело не в ресурсе ССД.
Super_inoy
> Своп вероятно вырублю(
Да смысла нету же,... разве что жаба душит, место на основном SSD на 1.5 оперативки забивать.
Super_inoy
> И ССД значительно медленнее оперативки.
HDD ещё медленнее. И при работе со свопом критичнее таки не скорость подкачки, а IOPS, а оно вполне приличное у нормальных SSD
0iStalker
> HDD ещё медленнее.
Так причём тут это если я говорю о "выключу"? Так-то да, ещё раз - SSD примерно в 100 раз медленее, HDD примерно в 10к-100к(в зависимости от древности и ушатанности).
HDD своп полная жопа, по сути если система им воспользовалась с современными объёмами памяти можно идти чай наливать. Успеешь.
0iStalker
> Да смысла нету же,... разве что жаба душит, место на основном SSD на 1.5
> оперативки забивать.
*единственном носителе(можно конечно SSD из текущего пихнуть для каких-нибудь целей, но я наверное не стану дербанить текущий комп на запчасти в этот раз, и сделаю просто новую систему фулл с периферией). И так-то не обязательно занимать именно 1.5 объёма оперативки.
0iStalker
> Да смысла нету же,... разве что жаба душит, место на основном SSD на 1.5
> оперативки забивать.
Это антижаба получается: RAM в 30 раз дороже SSD. Не имеет смысла покупать её больше, чем нужно для типичных задач, а редкие превышения незаметно скроет своп на SSD. Поставить размер «по выбору системы» и всё. Будет нужно ― вырастет, не нужно ― уменьшится. У меня держится в районе 2,5 Гб при 16 ОЗУ - это 25 рублей примерно.
Кому интересно, программка, которая выделяет море памяти, но всю не использует. По умолчанию выделяется 10 гигабайт. Через параметр в командной строке можно передать другое число (в единицах гигабайт). У кого своп выключен, будет out of memory, если не хватит размера свободного ОЗУ. У кого включен, ничего не заметит, реальная нагрузка на ОЗУ окажется околонулевая.
Любая программа это делает (как минимум, имеет неиспользованное пространство в кучах и стеках потоков), но конечно не в таких масштабах. Хотя суммарно набегает.
Super_inoy
> > Windows не выбирает кого убивать, вообще не убивает процессы, которым не
> > может
> > выделить память.
> Ну так это проблемы и кривота менеджера винды.
Вообще-то он позволяет процессам пережить отказ, умерив аппетиты, если могут. Твоя программа, запросившая скромные 20 Мб не виновата, что Хром успел до неё отожрать всю память. За что её сразу убивать?