Я использую /run/shm/myfolder
для микрокеширования nginx, также сохраняя ngx_pagespeed
файлы там. Интересно, увеличится ли скорость, если я пойду с relatime
к noatime
? Это для HDD, но на tmpfs
что это изменит?
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=9929500k)
Причина использования noatime
или relatime
на реальном диске заключается в том, что без него чтение также будет включать запись на диск. Эта дополнительная запись может замедлить работу системы, вызвать раскрутку дисков, которые в противном случае оставались бы вращающимися намного дольше, а также вызвать износ флэш-носителей.
Но с tmpfs никакие данные никогда не нужно записывать на диск. Данные могут быть записаны в свопинг, но только если необходимо освободить оперативную память для других данных. Это означает, что частые обновления tmpfs не дороже, чем частые чтения, потому что в обоих случаях эффект будет заключаться в хранении данных в памяти.
Более того, tmpfs только выгружает содержимое файла. Метаданные (включая временные метки) просто остаются в ОЗУ. Таким образом, мы действительно просто говорим о том, следует ли обновлять метку времени в памяти, что очень дешево по сравнению с фактической операцией чтения, запускающей ее в первую очередь.
По этим причинам маловероятно, что будет заметная разница в производительности между использованием noatime
, relatime
или ни один из файлов tmpfs.
Теоретически я согласен с тем, что сказал @kasperd. Однако я решил попробовать это изменение на моем очень загруженном tmpfs, поддерживающем данные munin, и это сразу же обеспечило 8% -ное сокращение общего времени обработки munin.
Эта файловая система содержит более 300000 файлов, каждый из которых обрабатывается каждые 5 минут, и каждый бит производительности, который я получаю, помогает, поэтому 8% были довольно значительными.