Назад | Перейти на главную страницу

Почему 32-битные пулы приложений более эффективны в IIS?

Я проводил нагрузочные тесты с двумя разными веб-приложениями ASP.NET в IIS. Тесты запускаются с 5, 10, 25 и 250 пользовательскими агентами. Проверено на коробке с 8 ГБ ОЗУ, Windows 7 Ultimate x64. На одном и том же компьютере запущены IIS и проект нагрузочного тестирования.

Я сделал много прогонов, и данные очень согласованы. Для каждой загрузки я вижу меньшее «Среднее время страницы (с)» и меньшее «Среднее время отклика (с)», если для параметра «Включить 32-разрядные приложения» в пулах приложений установлено значение «Истина». Разница становится более заметной, чем выше нагрузка. При очень высоких нагрузках веб-приложения начинают выдавать ошибки (503), если пулы приложений 64-битные, но они могут не отставать, если установлены на 32-битные.

Почему 32-битные пулы приложений намного эффективнее? Почему по умолчанию для пулов приложений не используется 32-разрядная версия?

64-битные указатели памяти и другие связанные структуры данных в два раза больше, чем их 32-битные аналоги. Кроме того, 64-битный рабочий поток будет нести штраф каждый раз, когда ему потребуется доступ к 32-битному коду или библиотекам DLL при переключении режимов. (Изучите WoW64 и thunking.)

Самым большим (но не единственным) преимуществом использования 64 бит является возможность адресации много больше памяти. Если ваш пул приложений не использует более 2 или 3 гигабайт памяти и вам не нужно специально запускать 64-битный код, то, вероятно, нет веских причин для перехода на 64-битную версию. По мере развития технологий производители микросхем создают дополнительные регистры ЦП специально для 64-битных процессоров, чтобы улучшить их производительность, но, вообще говоря, нет волшебного повышения производительности только за счет использования большего количества бит. На самом деле, как вы только что видели, может быть и хуже.

64-разрядная версия = танк Abrams

32-битная = Toyota Prius

Один может выполнить гораздо больше работы, но другой сможет пройти через «Макдональдс».