Previous Entry Поделиться Next Entry
Linux, sendfile и AIO.
dr_cha0s
То что вышел GHC 7.8 rc1 уже ни для кого не секрет, как и предварительные тесты на котором warp рвёт ngnix.
Однако в процессе обсуждения выяснилось, что warp использует для статики sendfile, что, вообще говоря, правильно. Однако, sendfile блокируется на время чтения с диска. Для случая когда всё помещается в файловый кеш, всё - ок, но для определённых видов нагрузки (отдавать одновременно много файлов или отдавать больше чем пропускная способность диска, за счёт кеша) необходимо уметь AIO. nginx его умеет и умеет хорошо и на разных системах, у ghc же основная платформа Linux, он конечно работает на BSD, а так же собирается на Solaris и AIX, но уровень поддержки на этих платформах иной.
Отдельного замечания заслуживает AIO под линукс - он работает только в случае если файл открыт как O_DIRECT, что означает работу мимо файлового кеша, на BSD системах такого недостатка нету.
Из этого следует несколько выводов:
1. Из статьи следует только то, что в GHC сильно улучшили планировщик IO.
2. Если много статики, то перед web-сервером на Yesod (да и любом другом) лучше ставить nginx.
3. Если очень много статики, возможно Linux не самая лучшая система, т.к.на BSD при AIO остаётся файловый кеш.

P.S. Отдельное спасибо Славе Ольховченкову aka solhov за разъяснение про AIO в BSD и Linux.
Метки: , , , , ,

?

Log in

No account? Create an account