LINUX.ORG.RU

[C] Имеет ли смысл кеширование?

 


0

0

Пишу простой http сервер, и задумал сделать небольшую оптимизацию: если index.html файл небольшой, то копирую его в оперативу и из уже нее выдаю на запросы, а обновляю этот файл только после фиксированной паузы.

Теоретически такой прием дает меньше обращений к файловой системе и гипотетически еще меньше обращений к жесткому диску... Однако я задумался о том что кеширование ядром сводит на полный ноль такую оптимизацию и что в любом случае ядро будет файл держать в оперативе, в том числе при его изменении.

Так есть ли хоть какой-то смысл делать кеширование?


Обращения к диску соптимизирует ядро.

Твой приём сэкономит на системных вызовах, польза чего в обычных случаях очень сомнительна. Я не писал http-серверов для такой высокой нагрузки, но думаю, это может быть полезно, когда тысячи клиентов в секунду читают запрашивают один и тот же файл. Кстати, в таком случае порождать новый поток на каждого клиента тоже будет накладно.

Если ты делаешь специальный сверхбыстрый сервер, то, скорее всего, ты бы не задал такого вопроса. Если не делаешь сверхбыстрый сервер, не беспокойся об этом.

alexsaa
()
Ответ на: комментарий от naryl

>> Кстати, в таком случае порождать новый поток на каждого клиента тоже будет накладно.

> http://en.wikipedia.org/wiki/Yaws_(web_server)

Расшифруй, плиз, как высокопроизводительный многопоточный сервер относится к теме.

Я не вижу по ссылке слов "порождение нового потока на каждого клиента". Не вижу и сравнения издержек на многопоточность с издержками на открытие файлов.

alexsaa
()

> а обновляю этот файл только после фиксированной паузы.

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

isden ★★★★★
()
Ответ на: комментарий от KRoN73

Спасибо за разъяснение; надо будет почитать про это подробнее.

Как я понял, эрланговские "процессы" - штука ещё более лёгкая, чем линуксовые потоки?

alexsaa
()
Ответ на: комментарий от Valeriy_Onuchin

>он мне пАможет первернуть Матрицу мул"óн-намул"óн-у мул"óн

совсем разленились....

переверните просто ноут

roller ★★★
()
Ответ на: комментарий от s0ldat

если проблемм с производительность нет - то глупый блок кода это как раз кэширование. "Преждевременная оптимизация - корень всех зол" (с) ...

PIn
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.