На этой неделе операционная система Haiku получила заметный прирост производительности при работе с хранилищами. Этот результат стал возможен благодаря усилиям разработчика waddlesplash, который занялся ускорением дисковых операций. Результаты впечатляют.
Командаgit statusдолгое время был для больших репозиториев гораздо медленнее на Haiku, чем на Linux. Основная причина — конкуренция за блокировки в дисковых кэшах. В прошлом месяце waddlesplash посвятил много времени рефакторингу логики кэширования блоков и записей каталогов в ядре, чтобы использовать атомарные операции вместо эксклюзивных блокировок в наиболее частых случаях — при чтении уже кэшированного блока и добавлении новой записи в кэш. Такие изменения сложно писать и еще сложнее тестировать: любые ошибки, которые не видны сразу, обычно связаны с условиями гонки и проявляются лишь при тщательном анализе кода. Тем не менее результаты впечатляют: в тестеgit statusв репозитории Haiku buildtools (с более чем 160 000 файлов, включая исходники gcc и binutils) время работы с холодным дисковым кэшем сократилось с ~33 секунд до ~20 секунд, а с горячим дисковым кэшем — с ~15 секунд до ~2,5 секунд.
Подробности об этих и других изменениях в Haiku можно найти в августовском бюллетене проекта (ссылка на источник).