понеділок, 11 лютого 2013 р.

Windows 7 (x64) & PageFile | Виндоус 7 и файл подкачки


Только что столкнулся с одной неприятной особенностью Windows 7.

Кто узнаёт картинку - поймет о чем речь.

Например, установлено Initial size не 4096MB как на картинке, а 16MB - мол файл подкачки нам нужен раз в год, так что нечего им диск засорять. Maximum size 8192MB как на картинке.

Сценарий следующий – предположим у вас 512MB оперативной памяти (т.е. эмитируем ситуацию, когда памяти нехватит). Вы пытаетесь выделить из кучи (HeapAlloc, malloc, new….) 1,5 GB памяти.

Отличие:
Windows XP/ Windows 8 – запрос удовлетворен, файл подкачки автоматически моментально увеличивается до нужно размера.

Windows 7 – запрос не удовлетворен, потому что текущий файл подкачки + оперативная память меньше требуемого блока. Если выделять по 1МБ с задержкой в 1ms и дать возможность постепенно вырасти файлу подкачки до ~1.5 ГБ, то позже тот-же запрос на те-же 1.5 Г будет удовлетворен. (Fck!!!)

Короче нельзя семерке ставить маленький Initial Size. Это актуально и на Hyper-V виртуальной машине, где оперативная память динамически добавляется менеджером по-необходимости. Собственно на ней (W7 SP1 x64) проблема и вылезла.

Скажу спасибо, если кто-то найдет этому вменяемое объяснение. Например ссылку на MS knowledge article или еще что-то..

В этой ситуации фотошоп miserable fail :(


Немає коментарів: