Я озадачен, если Linux последовательно записывает и читает в свопинге.
Теперь я анализирую давление на раздел подкачки, и странно, что загрузка составляет около 90% (столбец util в iostat), но пропускная способность составляет всего 10 МБ / с на жестких дисках 2xSAS RAID1.
Google не мог помочь
Считывание подкачки не только случайное, но и сериализованное. Имейте в виду, что система виртуальных машин создает иллюзию реальной оперативной памяти, поэтому процесс пользовательского пространства не имеет возможности оптимизировать доступ. С его точки зрения, это просто ОЗУ, так что имеет быть прочитанным, прежде чем что-нибудь еще может случиться.
Плохая вещь в сериализованном случайном чтении заключается в том, что он должен пройти полный цикл туда и обратно (запрос, поиск направления, поворот пластины, чтение, ответ), прежде чем он сможет отправить следующий запрос ввода-вывода.
это означает, что в худшем случае одна страница размером 4 КБ на IOP (на поток). Предполагая 250 операций ввода-вывода в секунду на шпиндель, вы получите только 500 операций ввода-вывода в секунду, 500 / с x 4 КБ = 2 МБ / с. Кажется, вы все еще лучше, чем в худшем случае для вашего оборудования. Возможно, вам помогает некоторая кластеризация страниц с упреждающим чтением.
Как правило, запись в раздел подкачки может осуществляться в любом месте, где подкачка бесплатна, поэтому они, как правило, будут последовательными. Чтение из свопа должно относиться к конкретным данным, которые нужны системе, поэтому они часто не являются последовательными.