Plain 226 31 августа, 2021 Опубликовано 31 августа, 2021 · Жалоба Имеется феномен — если отключить файл подкачки, то после исчерпания ОЗУ, работающие программы закрываются, а иначе, т.е. при 100% заполнении файла подкачки,— продолжают работать. Следовательно, это искусственное ограничение и его как-то можно отключить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 232 31 августа, 2021 Опубликовано 31 августа, 2021 · Жалоба На сколько я понимаю, это не искусственное ограничение, а естественное. У ядра просто нет выбора. Как только у ядра ОС заканчивается адресное пространство, доступное для отображения при запуске и работе процессов, то кому-то приходится пострадать. Именно поэтому рекомендуется делать своп-файл приличного размера, хотя для работы он вроде бы не нужен. По работе этого механизма в windows я документации не встречал, но в линуксе это хорошо описано. Полагаю, что windows действует аналогично. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 31 августа, 2021 Опубликовано 31 августа, 2021 · Жалоба 1 hour ago, Plain said: Имеется феномен — если отключить файл подкачки, то после исчерпания ОЗУ, работающие программы закрываются, а иначе, т.е. при 100% заполнении файла подкачки,— продолжают работать. Это не феномен, а ошибка эксперимента. И при включенной подкачке программы успешно крашатся при исчерпании памяти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 226 31 августа, 2021 Опубликовано 31 августа, 2021 · Жалоба При включённой и на 100% заполненной страничной памяти у меня всё работает, и ещё десяток новых программ можно запустить без проблем, кроме жуткого тормоза. Моя версия — поскольку сами программы занимают лишь половину ОЗУ, то всё забито файловым кэшем, т.е. внутренними данными ОС, и поэтому ей каждый раз легко подвинуться. При выключенной подкачке эксперимент тот же, но ОС действует по-другому. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 31 августа, 2021 Опубликовано 31 августа, 2021 · Жалоба 7 minutes ago, Plain said: При включённой и на 100% заполненной страничной памяти Это может лишь означать что видимое вами 100% заполненной страничной памяти по факту не является 100%-ным, и при этом swap-файл все еще работает (как раз из за этого и тормоза). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 226 31 августа, 2021 Опубликовано 31 августа, 2021 · Жалоба А что тогда означают эти постоянные 99%? При этом можно ещё много программ запустить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 31 августа, 2021 Опубликовано 31 августа, 2021 · Жалоба 2 hours ago, Plain said: При включённой и на 100% заполненной страничной памяти у меня всё работает, и ещё десяток новых программ можно запустить без проблем, кроме жуткого тормоза. Моя версия — поскольку сами программы занимают лишь половину ОЗУ, то всё забито файловым кэшем, т.е. внутренними данными ОС, и поэтому ей каждый раз легко подвинуться. Логично: когда swap исчерпан, начинает сокращаться дисковый кэш (как раз на десяток программ с сопутствующими тормозами). Без swap этот момент наступает несколько раньше, только и всего. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 226 31 августа, 2021 Опубликовано 31 августа, 2021 · Жалоба Вопрос темы в том, что ОС поджимает кэш только когда подкачка включена, т.е. у него в этом случае ниже приоритет, а когда выключена, то кэш забивает всё ОЗУ и начинает крошить другие программы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 232 31 августа, 2021 Опубликовано 31 августа, 2021 · Жалоба 2 часа назад, Plain сказал: кэш забивает всё ОЗУ Кэш имеет более низкий приоритет, чем память для работы процессов, поэтому я очень сильно сомневаюсь, что причина в этом. Чтобы память не пропадала впустую ОС пытается её использовать для повышения эффективности работы, но холодные страницы (без модификации) ОС может освободить от использования кешом и отдать процессам в любой момент. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 226 1 сентября, 2021 Опубликовано 1 сентября, 2021 · Жалоба Эксперимент выглядит так, что с выключенной подкачкой я запускаю всего пару программ, которые занимают 25% ОЗУ, и через несколько часов работы одной из них с файлами, ОС закрывает другую, которая ничего не делала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 232 1 сентября, 2021 Опубликовано 1 сентября, 2021 · Жалоба Если предположить, что она занимается отображением файлов в память и не закрывает их, то такое вполне возможно и объяснимо. https://docs.microsoft.com/en-us/windows/win32/memory/file-mapping А вообще нужно смотреть карту памяти ваших процессов и не текут ли в них дескрипторы и память. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 226 1 сентября, 2021 Опубликовано 1 сентября, 2021 · Жалоба Да, работает с файлами, т.е. они все заняты, но при включённой подкачке ОС их скидывает на диск, а при выключенной — нет. Вряд ли что-то течёт, с подкачкой эта машина работает месяцы без сбоев. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 232 1 сентября, 2021 Опубликовано 1 сентября, 2021 · Жалоба Подкачка расширяет доступное виртуальное адресное пространство для ядра ОС и туда могут вытесняться относительно холодные страницы памяти, которые жизненно необходимо вытеснить, чтобы обеспечить выполнение новых запросов на выделение памяти. По-моему все у вас получается логично. 29 минут назад, Plain сказал: Вряд ли что-то течёт, с подкачкой эта машина работает месяцы без сбоев. Я бы всё же это проверил, т.к. у меня было подобное пару раз у длительно работающих сервисов, причём течи были вызваны гонками между потоками и в результате частенько получалось, что при тормозящей со свопом системе оно как-то работало, а вот на системах с минимумом свопа или без него процессы валились OOM killer'ом ядра Linux. Ещё можно поэкспериментировать с https://github.com/lowleveldesign/process-governor чтобы оценить на сколько реальное поведение процесса с точки зрения объема выделяемой памяти отличается от теоретических оценок требуемой для работы процесса памяти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 226 1 сентября, 2021 Опубликовано 1 сентября, 2021 · Жалоба Кажется понял механизм кэша, о чём тут говорили,— ОС ограничивает его на уровне порядка –1% от имеющегося объёма ОЗУ, тогда при включённой подкачке она через этот 1% начинает её заполнять, а при выключенной всё крошится, потому что 1% практически для любой программы не хватит, если понадобится, т.е. вопрос темы таки сводится к тому, где подкрутить настройку кэша. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 232 1 сентября, 2021 Опубликовано 1 сентября, 2021 · Жалоба В реестре: https://www.registryrecycler.com/blog/2013/07/enhance-windows-memory-management-through-registry/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться