последствия ядерной войны КРИС КАСПЕРСКИ АКА МЫЩЪХ Спецвыпуск: Хакер, номер #072, стр. 072-062-3 Начнем с того, что страницы, ранее объединенные в связанный список (linked list), теперь повешены на сбалансированные AVL-деревья, дающие выигрыш только при размерах файла подкачки в несколько десятков гигабайт. А на фиг нам столько памяти?! Для серверов это вполне нормально, но мы-то говорим в первую очередь о рабочих станциях! Сервер можно и на базе OpenBSD слепить, там с безопасностью и производительностью всяко получше будет, чем у Виста/server longhorn. А вот сокращение фрагментации файла подкачки (как внешней - на диске, так и внутренней - соседние виртуальные страницы выгружаются рядом) можно только приветствовать. Однако сразу же возникает вопрос - почему же этого не сделали раньше? Да потому, что уменьшение внутренней фрагментации снижает эффективность использования дискового пространства и оправдывает себя только на подкачках очень большого размера. Все очень просто! Выгружая страницу на диск, система вынуждена зарезервировать в файле подкачки место для ее «соседей», которые, возможно, никогда не будут выгружены. Впрочем, при современных объемах жестких дисков это становится уже не столь критично, - производительность важнее. Радует и тот факт, что система наконец-то перестала выгружать модифицированные страницы, содержимое которых более не используется. Например, при выделении нового блока памяти он автоматически забивается нулями (в противном случае, один процесс мог бы без труда похитить данные всех остальных), но выгружать такую страницу памяти на диск не нужно, поскольку в любой момент времени забивку нулями можно выполнить повторно. Исследование виртуальной памяти и файла подкачки показывает, что «лишние» вытеснения страниц происходят сравнительно редко и выигрыш в производительности на общем фоне практически неощутим, тем не менее «десяток старушек - уже рубль» (с) Раскольников. На волне общемировой тенденции глобализации усилилась интеграция менеджера файла подкачка с дисковым кэшем, чего общественность уже давно ждала. Теперь сброс страниц на диск и сброс дисковых буферов происходят согласованно, что увеличивает производительность при интенсивном вводе/выводе, который, опять-таки, характерен в основном для серверов, а рабочие станции дрыгают диском только по «торжественным» случаям. [менеджер кучи.] Динамическая память, так же называемая кучей (без которой немыслимо существование приплюснутого Си и платформы .NET), облагает программиста ощутимыми накладными расходами, особенно заметными на маленьких блоках. И оптимизация менеджера кучи не способна ощутимо повлиять на производительность, поскольку выделение маленьких блоков берет на себя библиотека времени исполнения (RTL) конкретного компилятора, обращающаяся к операционной системе только с «оптовыми» заказами. |