Системное ПО
Системное ПО
Системное ПО
Системное ПО
Системное ПО
Системное ПО
Системное ПО
Системное ПО
Системное ПО
Системное ПО
Системное ПО
147.50K

Системное ПО. Ввод-вывод

1. Системное ПО

Ввод-вывод

2. Системное ПО

При записи данных на диск
операционная система записывает
их в кэш, периодически асинхронно
сбрасывая их на диск
В linux записью данных из кэша
занимается процесс pdflash
В системе может работать
одновременно несколько потоков
pdflash (от 2 до 8)
При уменьшении активности вводавывода потоки удаляются (раз в
секунду), при увеличении –
добавляются
При записи происходит
упорядочивание данных для
минимизации движений головок диска
Вывод (запись)
/proc/sys/vm/
dirty_writeback_centisecs
The kernel flusher threads
will periodically wake up and
write `old' data out to disk.
This tunable expresses the
interval between those
wakeups, in
100'ths of a second.
Setting this to zero disables
periodic writeback
altogether.
(default 500)

3. Системное ПО

Вывод (запись)
/proc/sys/vm/
dirty_expire_centisecs
This tunable is used to define when dirty data is old enough to be
eligible for writeout by the kernel flusher threads. It is expressed in
100'ths of a second. Data which has been dirty in-memory for longer
than this interval will be written out next time a flusher thread wakes up
(default 3000)
/proc/sys/vm/
dirty_background_ratio
Contains, as a percentage of total available memory that contains free
pages and reclaimable pages, the number of pages at which the
background kernel flusher threads will start writing out dirty data.
The total avaiable memory is not equal to total system memory.
(default 10)

4. Системное ПО

Вывод (запись)
/proc/sys/vm/
dirty_ratio
Contains, as a percentage of total available memory that contains free
pages and reclaimable pages, the number of pages at which a process
which is generating disk writes will itself start writing out dirty data.
The total avaiable memory is not equal to total system memory.
(default 40)
/proc/sys/vm/
drop_caches
Writing to this will cause the kernel to drop clean caches, as well as
reclaimable slab objects like dentries and inodes. Once dropped, their
memory becomes free.
To free pagecache:
echo 1 > /proc/sys/vm/drop_caches
To free reclaimable slab objects (includes dentries and inodes):
echo 2 > /proc/sys/vm/drop_caches
To free slab objects and pagecache:
echo 3 > /proc/sys/vm/drop_caches

5. Системное ПО

Вывод (запись)
Данные, записываемые на диск, находятся в кэше до тех пор, пока
не выполнено хотя бы одно из условий:
они дольше 30 секунд находятся в памяти;
кэшированные страницы занимают более 10% рабочей памяти.
Если размер кэша превысил 40% рабочей памяти, ввод-вывод
приостанавливается для всех процессов до тех пор, пока все
«грязные» данные не будут записаны

6. Системное ПО

Вывод (запись)
Способы изменить параметры pdflash в linux:
sysctl -w vm.dirty_ratio=50
В файле /etc/sysctl.conf вносим, например:
vm.dirty_background_ratio = 10
vm.dirty_ratio = 40
Синхронизируем данные кэша и диска, очистим кэш и сохраним
параметры:
sync; echo 3 > /proc/sys/vm/drop_caches; sysctl -p

7. Системное ПО

Планировщик ввода-вывода
Запросы на чтение и запись обрабатывает планировщик
ввода-вывода
Планировщики ввода/вывода выполняют две основные операции:
слияние и сортировка.
Слияние – процесс объединения нескольких смежных запросов
ввода/вывода в один запрос.
Пример: Два запроса:
чтение с диска блока номер 5
Чтение блоков с 6 по 7.
Эти запросы могут быть объединены в один запрос на чтение
блоков с 5 по 7

8. Системное ПО

Планировщик ввода-вывода
Сортировка – процесс упорядочивания запросов ввода/вывода в
восходящем порядке номеров блоков.
Например, если есть операции ввода/вывода с блоками номер
52, 109, 7,
то планировщик ввода/вывода будет сортировать эти запросы в
порядке
7, 52 и 109.
Таким образом, перемещения головок диска сводятся к минимуму.
Вместо потенциальных движений наудачу туда-сюда-обратно,
установка головок диска происходит в плавном, линейном режиме.
При этом возрастает производительность.

9. Системное ПО

Планировщик ввода-вывода
NOOP
NOOP — наиболее простой планировщик. Помещает все запросы
в очередь FIFO и исполняет их без переупорядочивания.
Планировщик этот, тем не менее, пытается объединять
однотипные запросы для сокращения операций ввода/вывода.
NOOP используется в следующих ситуациях:
Имеются другие планировщики на более низком уровне,
например интеллектуальный RAID
Схема расположения секторов скрыта от системы
Порядок запросов не влияет на производительность, например
при использовании SSD

10. Системное ПО

Планировщик ввода-вывода
CFQ (Complete Fair Queuing)
В CFQ каждому процессу присваивается собственная очередь, и
каждой очереди присваивается квант времени (timeslice).
Планировщик ввода/вывода по кругу обходит каждую очередь и
обслуживает запросы из очереди до тех пор, пока не будет
исчерпан лимит времени или не останется запросов в этой
очереди.
В последнем случае CFQ планировщик будет ждать, по
умолчанию 10-мс, нового запроса из очереди. Если ожидание
было напрасным, то планировщик переходит к следующей
очереди.
Запросы на чтение имеют приоритет над несинхронизированными
запросами. Таким образом, CFQ способствует чтению и
предотвращает проблему writes-starving-reads.
CFQ планировщик хорошо подходит для большинства задач

11. Системное ПО

Планировщик ввода-вывода
Deadline
Deadline работает с тремя очередями:
Отсортированная очередь
FIFO очередь на чтение
FIFO очередь на запись.
Каждому запросу в очереди FIFO назначено время окончания. Для
очереди чтения - 500 миллисекунд. Для очереди записи - пять
секунд.
В нормальной ситуации к жесткому диску посылаются запросы
ввода/вывода из отсортированной очереди.
Когда у записи вначале списка одной из дополнительных FIFO
очередей истечет назначенное время, I/O scheduler
останавливает обработку I/O запросов из стандартной очереди, и
начинает обслуживание запросов из этой FIFO очереди.
English     Русский Правила