Demó: BFQ IO ütemező SSD-vel

Címkék

A Linux kernel többfajta IO ütemezőt is kínál. Köztük az operációs rendszer futása közben szabadon váltogathatunk. Az adott kernel által támogatott IO ütemezők listája lekérdezhető például az alábbi módon:

# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq

A fentiekből az látszik, hogy az Ubuntu 14.04 LTS 3.13.0-30-generic kernele a noop, a deadline és a cfq IO ütemezőt kínálja. Ebből az sda eszközhöz a deadline van használatban.

Az IO üzemezők közt szabadon váltogathatunk és néha érdemes is váltani, hiszen különböző hardvereszközök, terhelések és körülmények mellett nem feltétlen mindig ugyanaz az IO ütemező adja a legjobb eredményt. A váltás a következőképpen történhet:


# echo cfq > /sys/block/sda/queue/scheduler

A fenti parancs kiadása után a cfq IO ütemező lett az aktuális IO ütemező az sda eszközhöz. Ezt le is ellenőrizhetjük:


# cat /sys/block/sda/queue/scheduler
noop deadline [cfq]

Paolo Valente egy új, Budget Fair Queueing (BFQ) nevű IO ütemezőt próbál már egy ideje elfogadtatni a mainline kernelbe. Hogy mennyire nem mindegy, hogy éppen melyik IO ütemező van használatban, azt jól bemutatja Paolo BFQ-val készített demója.

Az alábbi demóban egy SSD-vel rendelkező rendszeren váltogat az IO ütemezők közt:

A BFQ-ról részletesen weboldalán lehet olvasni.

Hozzászólások

Ez remek, fájlmásolás közben is tudok most már videót nézni. Kár, hogy ilyet linuxon egyáltalán nem szoktam csinálni :-)

Viszont arról nem sok szó esik, hogy mindeközben mennyire jó az elevator működése sok szálon, random IO mellett. Kíváncsi lennék rá.

A jovoben sok terulet elfog mozdulni az adaptiv megoldasok fele szerintem. Annak minden hatranyaval egyutt, pl.bonyolultsag es kiszamithatatlansag. Persze van ahol jobblehet az osszkep. Erdekes.

\o/

Nem tudom, hogy Ubuntu-n mi az alapértelmezett. Én szándékosan használok deadline-t.

title Ubuntu 14.04, kernel 3.13.0-30-generic
root (hd0,3)
kernel /boot/vmlinuz-3.13.0-30-generic root=UUID=xxxxxx-xxx-xxx-xx-xxx ro elevator=deadline vga=791 quiet splash i915.modeset=1 acpi_osi=Linux

--
trey @ gépház

Én se tudtam, most néztem meg... Csak azért furi, mert ezt valami hatalmas újdonságnak jött le nekem, aztán kiderült hogy így van default.

Egyébként miért használsz deadlinet?

[szerk] Most megnéztem, cfq a default centosban és opensuseben is... Szóval nem értem.
--
The Community ENTerprise Operating System

Ilyet nem lehet kijelenteni, hogy ha server akkor CFQ ha desktop akkor meg deadline. A igazabol a workload-tol illetve a disk tipusatol fugg.

Elmeletileg a CFQ pont, hogy desktop like workload-on jo, mert minden processnek kulon queue-ja van es process prioritastol fuggoen valaszt a scheduler ->
ott ahol interactivitas kell, jol teljesit.

Ha pl adatbazis szerverrol beszelunk ahol tobb process fog nagy IO kat kerni, akkor a deadline a jo valasztas (kicsit megnovelt fifo_batch ertekkel nagyobb throughput-ot erhetunk el). De ha pl egy mailserverrol beszelunk ahol sok process apro parhuzamos IO-kat ker ott megint a CFQ a jobb.

A fenti peldak normal hdd-vel ertendok fizikai gepeken.
Ha virtualizalsz akkor a guestekben noop-ot javasolnak -> ugyis a host gep schedulerje fogja elvegezni a tenyleges munkat
Ha ssd-d van ami siman kiszolgalja a kereseket, akkor megint noop (de a deadline is sokkal jobb mint a CFQ).

Rendben, en nem ezt olvastam ki a mondatodbol ezert helyesbitettem.

RHEL6-on (ugye CentOS 6 ) cfq az alapertelmezett.

RHEL7-en a tuned be van kapcsolva by default es egy adott algoritmus alapjan megprobalja kitalalni, hogy milyen profile a legjobb az adott gepre. Ez alapjan tuningolja a gepet, beleertve altalaban az IO schedulert is. Kikapcsolva a tuned-t megkapjuk a default schedulert, ami a deadline (SCSI device-okra, kiveve SATA diskekhez ahol maradt a cfq).

user@d610:/etc$ lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 14.04 LTS
Release: 14.04
Codename: trusty
user@d610:/etc$ uname -a
Linux d610 3.13.0-30-generic #55-Ubuntu SMP Fri Jul 4 21:43:42 UTC 2014 i686 i686 i686 GNU/Linux
user@d610:~$ cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
user@d610:~$

Alap Xubuntu, ütemező gyári beállításokkal.

---
A Linux nem ingyenes. Meg kell fizetni a tanulópénzt.
Az emberek 66 százaléka nem tud számolni! Gondoljatok bele, ez majdnem a fele!!
Mindenki jó valamire. Ha másra nem, hát elrettentő példának.

Most tettem fel egy manjaro-t az anyósomnak, és úgy látom azon alapértelmezett a bfq:

#uname -r
3.12.24-1-MANJARO

#cat /sys/block/sda/queue/scheduler
noop deadline cfq [bfq]

Az érdekes, hogy az ssd-nél, és a merevlemeznél szintúgy.

"BFQ is the default I/O scheduler in Manjaro, OpenMandriva, Sabayon and ROSA, as well as in the Zen Kernel, the pf-kernel and several kernels for smartphones. BFQ is instead optionally available in Arch, PCLinuxOS and Gentoo."

"Az érdekes, hogy az ssd-nél, és a merevlemeznél szintúgy."

Az alábbi videó fényében ez annyira nem érdekes:

http://youtu.be/J-e7LnJblm8

--
trey @ gépház