Запись в /proc/mounts
:
//OUR_ORG.file.core.windows.net/OUR_ORG /data/csv cifs rw,relatime,vers=3.0,sec=ntlmssp,cache=strict,username=OUR_ORG,domain=,uid=0,noforceuid,gid=0,noforcegid,addr=SOME_IP,file_mode=0777,dir_mode=0777,soft,persistenthandles,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1 0 0
Я пытаюсь запустить команду:
find /data/csv -mtime -1 -name '*.csv.gz'
К сожалению, это очень медленно.
ls -alh --time-style=+%D /data/csv/
Эта команда работает нормально и завершается менее чем за 2 секунды.
Я проверил Strace. find
используют newfstatat
для внутреннего использования, но ls
используют lstat
для внутреннего использования.
Я бы предпочел использовать find
с некоторым переключателем, а не анализировать ls
вывод. Можно ли как-нибудь сделать команду find
достаточно быстрой?
Измените параметры на
cache=loose
С одним серьезным комментарием из страницы руководства:
cache=loose может вызвать повреждение данных, когда несколько средств чтения и устройств записи работают над теми же файлами.
cache=
Cache mode. See the section below on CACHE COHERENCY for details. Allowed values are:
• none: do not cache file data at all
• strict: follow the CIFS/SMB2 protocol strictly
• loose: allow loose caching semantics
The default in kernels prior to 3.7 was "loose". As of kernel 3.7 the default is "strict".
У меня была похожая команда find, которая заняла около 10 минут, в то время как команда ls возвращала результат за секунды. Настройка кеша ни на что не повлияла.
При использовании параметра actimeo=60
(по умолчанию = 1 с) команда поиска возвращается менее чем за 10 секунд.
actimeo=arg
Время (в секундах), в течение которого клиент CIFS кэширует атрибуты файла. или каталог, прежде чем он запросит информацию об атрибутах с сервера. В течение этого периода изменения, происходящие на сервере, сохраняются. незамеченным, пока клиент снова не проверит сервер. По умолчанию тайм-аут кэша атрибута установлен на 1 секунду. Это означает более частый прямые обращения к серверу, чтобы проверить, имеют ли атрибуты изменения, которые могут повлиять на производительность. С помощью этой опции пользователи могут найти компромисс между производительностью и корректностью метаданных кеша, в зависимости от потребности в рабочей нагрузке. Более короткие тайм-ауты означают лучший кеш когерентность, но частое повышенное количество обращений к серверу. Более длительные тайм-ауты означают меньшее количество обращений к серверу, но более слабая когерентность кэша. Значение актимео представляет собой положительное целое число, которое может содержать значения от 0 до максимального значения 2^30 * Гц (частота прерывания по таймеру).