Welchen IO Scheduler wofür?

Lesenswerte Artikel, Anleitungen und Diskussionen
oxygen
RSAC
Posts: 2179
Joined: 2002-12-15 00:10
Location: Bergheim

Welchen IO Scheduler wofür?

Post by oxygen » 2005-02-05 11:55

Ich wollte mal eine Diskussion zum Thema IO Scheduler lostreten. In der Hilfe zum Kernel steht:
The anticipatory I/O scheduler is the default disk scheduler. It is generally a good choice for most environments, but is quite large and complex when compared to the deadline I/O scheduler, it can also be slower in some cases especially some database loads
The deadline I/O scheduler is simple and compact, and is often as good as the anticipatory I/O scheduler, and in some database workloads, better. In the case of a single process performing I/O to a disk at any one time, its behaviour is almost identical to the
anticipatory I/O scheduler and so is a good choice.
The CFQ I/O scheduler tries to distribute bandwidth equally among all processes in the system. It should provide a fair working environment, suitable for desktop systems.
(siehe: Device Drivers ---> Block devices ---> IO Schedulers)

Standardmäßig wird anticipatory ausgewählt. Jetzt überlege ich, ob ich auf einem reinen MySQL Server mal zu deadline und auf meinem Notebook zu CFQ wechseln soll. Hat das jemand von euch schon gemacht, oder weiß wo es weitere Infos gibt?

thorsten
RSAC
Posts: 732
Joined: 2003-02-01 13:14
Location: Fuldatal

Re: Welchen IO Scheduler wofür?

Post by thorsten » 2005-02-06 14:29

Schau mal in das aktuelle Linux Magazin, da ist ein mehrteiliger Artikel zu genau diesem Thema.

Folgendes Shellscript kann dir u.U. schon einen Ã?berblick über die Leistungsfähigkeit der unterschiedlichen Scheduler geben:

Code: Select all

#!/bin/bash
# Simples Script zur Messung der Interaktivität der IO-Scheduler
# GPL, (c) 2004 Juergen Quade.

function do_benchmark()
{
  dd if=/dev/zero of=/tmp/foo bs=1M count=7000 &
  echo $1 >$SCHEDULERFILE
  sleep 15
  echo -n "---> $1: "
  time cat /usr/src/linux/kernel/*.c > /dev/null
  # clean up
  echo anticipatory >$SCHEDULERFILE  
  kill -9 $! # kill last background process (dd)
  rm /tmp/foo
}

SCHEDULERFILE='/sys/block/hda/queue/schedule'

do_benchmark noop
do_benchmark anticipatory
do_benchmark deadline
do_benchmark cfq
Das Ergebnis zeigt folgende Reihenfolge (langsamste zuerst)
No-Op, deadline, CFQ, Anticip.

Ich würde mir an deiner Stelle diese Ausgabe (03/05) und auch mindestens die nächste kaufen.
Der Artikel ist extrem interessant - wie die ganze Reihe 'Kern-Technik'

EDIT: oops, hatte doch glatt die Zeile mit der Definition des SCHEDULERFILE vergessen. Nun sollte das Script auch mit der Annahme laufen, dass sowohl /tmp als auch /usr/src/linux auf hda residieren.
Last edited by thorsten on 2005-02-07 06:36, edited 1 time in total.

oxygen
RSAC
Posts: 2179
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Welchen IO Scheduler wofür?

Post by oxygen » 2005-02-06 19:10

Danke für den Tipp!

User avatar
Joe User
Project Manager
Project Manager
Posts: 11578
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Welchen IO Scheduler wofür?

Post by Joe User » 2005-02-06 21:00

/me Thread archivieren...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.