|
Дано:
1. система с XP, оперативки в обрез хватает для работы всех программ (браузер, почтовик, офис, и прочая, и прочая, и прочая). В фоне работает качалка (DC++), которой я качаю аниме у соседей по локалке, а они качают у меня Сэйлормун.
2. Виндовс - дура, и работает с ресурсами по принципу "заставь дурака богу молиться - он себе лоб расшибёт" (есть вечные ценности, которые не меняются ещё со времён 95-й).
Получаем:
1. Как только начинается работа с большим файлом (индексирование, скачка, закачка, просмотр AVI), Винда бросается увеличивать Святой Файловый Кэш, изо всех сил стараясь упихнуть в него файл целиком. Всё бы ничего, но при этом она, чтобы освободить оперативную память, спихивает в своп-файл все программы, и даже часть собственного ядра, и не останавливается, пока кэш не займёт всю память минус 100 мегабайт (а самой Выни для нормальной работы нужно не меньше 180!). Я специально проверял - при апгрейде оперативки с 256 до 512, пиковое значение кэша выросло со 150 до 400.
2. Когда всё спихнуто в своп и утрамбовано, Винду начинает колбасить и сосисить, реакции на простейший клик мышкой приходится ждать минуты по три, и даже Диспетчер Задач впадает в кому.
3. Выявленный мною ранее закон свопинга гласит, что своп идёт на 1/10 от пропускной способности винчестера (из-за фрагментации). Посчитайте сами, сколько она вам будет вытаскивать обратно в память все эти 400 мегабайт, на скорости от 0,5 до 1 мегабайта в секунду. Два раза можно чай с булочкой попить.
4. Когда работа с файлом завершена, система может и уменьшить размер файлового кэша до разумных пределов, но всё это - уже из оперы "больной перед смертью потел, или не потел". Мавр сделал своё дело, программы упихнуты в своп.
Решение:
Ограничить! Вправить этой дуре мозги! Не позволять ей отводить на файловый кэш больше десятой части оперативной памяти!
...увы, это только в 98-й было легко: пара магических строчек в win.ini - и зверь укрощён. ИксПи - это вам не хомячок. Это тигра.
Всё, что я нашёл - это программа CacheSet, позволяющая просмотреть параметры файлового кэша и задать его предельное значение. Увы, но заданные ей лимиты Вынь ИксПи воспринимает, как необязательные рекомендации. И плюёт на них, когда видит большой файл (кэш для неё - это СВЯТОЕ!)
...так что, пришлось мне, именитому переводчику, отрываться от написания своего фанфика, брать исходники CacheSet в зубы, и писать более агрессивную версию, которая два раза в секунду проверяла бы, не раздулся ли кэш, и давила бы, ДАВИЛА, ДАВИЛА его на*#@$!!!
Модификация:
Если захотите
улучшить, или поправить - исходник прилагается, компилировалось на
FreePascal. Если не задавать кондишнл silent - получите "говорливую" версию с консолью.