Мне кажется, вы неправильно используете *
в регулярном выражении.
Спецификацию (ср. также man -страница grep )утверждает, что
* The preceding item will be matched zero or more times.
Таким образом, ваше регулярное выражение будет означать :«Совпадение с любым именем файла, начинающимся с чего угодно, кроме буквы s
, и это ноль или более раз, а затем ноль или более раз буквы m
».
Вместо этого регулярное выражение должно выглядеть так:
ls | grep -E '^[^s][[:alnum:]]*m'
т.е. вы должны указать какой символ должен присутствовать ноль или более раз перед 'm',в вашем случае подойдет любой буквенно-цифровой символ. Если ваши имена файлов могут содержать -
или _
, замените [[:alnum:]]
на [[:print:]]
.
В крайнем случае, если имя вашего файла может также начинаться с m
, регулярное выражение будет
ls | grep -E '(^m|^[^s][[:print:]]*m)'
Вы говорите о микро секундах и 11 микросекундах против 111 микросекунд.Не нужно много усилий, чтобы нарушить столь чувствительное чтение :
.и т. д.
Вы не включили полную работу (, и я вижу, что вы установили iodepth=16
, что заставляет меня задуматься, какие еще вещи вы установили в своей работе ), так что вы требуете слишком многого от любого ответа. Однако я укажу, что 95% ваших показаний находятся в пределах 3 микро секунд друг от друга, поэтому вы не видите много выбросов на чуть менее миллиона операций ввода-вывода. Какой детерминизм вы ожидаете от системы не -реального времени?