ใน Linux เราสามารถเพิ่ม หรือลดระดับความรวดเร็วใน การเข้าถึง I/O ได้ในระดับ process โดยใช้คำสั่ง ionice ซึ่งเป็นคำสั่งที่สามารถเรียกดูและแก้ไขค่า I/O scheduling class และ priority ในระดับ process ได้
รูปแบบคำสั่ง
#ionice [-c] [-n] [-p] [COMMAND [ARG...]]
โดยที่
-c คือการกำหนด scheduling class โดยที่ 1 คือ real time, 2 คือ best-effort และ 3 คือ idle.
-n คือการกำหนด scheduling class data เป็นการ defines class data ซึ่งสามารถใช้ได้กับ -c1 และ -c2 เท่านั้น
หรือก็คือ real time และ best-effort โดยเรียงจาก 0-7 (0 จะมาค่า priority มากที่สุด)
-p คือค่า process id นั้นเอง แต่ถ้าไม่มีการกำหนดพารามิเตอร์ -c และ -n โปรแกรม ionice จะแสดง
รายละเอียดของค่าต่างๆ ใน process id นั้นแทน
ตัวอย่างการใช้โปรแกรม ionice
กำหนด process ที่ PID 89 ให้เป็น idle io process.
# ionice -c3 -p89
กำหนดให้ bash ทำงานแบบ best-effort และ highest priority.
# ionice -c2 -n0 bash
ดูแค่พารามิเตอร์ของ scheduling class และ priority ของ PID 89
# ionice -p89
Posted by Comments Off
ในการใช้งาน VOD servers นั้นถ้าเราใช้ cfg scheduler นั้นเวลาที่มี connection ที่เข้ามามีจำนวนมากจะทำให้เกิดเวลาในการทำงานของ I/O ของ disk เพิ่มขึ้น ซึ่งจะทำให้เวลาที่ผู้ใช้งานดู video ไม่เกิดความราบรื่นต่อการรับชม ดังนั้นเราควรที่จะใช้ “deadline” I/O scheduler เพื่อ optimize I/O ให้สามารถรองรับการทำงานแบบ maximizing I/O throughput ได้
การตั้งค่าเราสามารถทำได้ตอน boot เครื่องโดยใช้ “elevator” ซึ่งเป็น kernel parameter ตัวหนึ่ง โดยให้เราไปแก้ไขไฟล์ grub.conf ดังตัวอย่างข้างล่าง
title Red Hat Enterprise Linux Server (2.6.18-8.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/vg0/lv0 elevator=deadline
initrd /initrd-2.6.18-8.el5.img
ใน Red Hat Enterprise Linux 5 เราสามารถที่จะเปลี่ยน I/O scheduler แบบ on the fly ได้ดังตัวอย่างข้างล่างนี้
# cat /sys/block/sdb/queue/scheduler noop anticipatory deadline [cfq] # echo 'deadline' > /sys/block/sdb/queue/scheduler # cat /sys/block/sdb/queue/scheduler noop anticipatory [deadline] cfq
เรายังสามารถที่จะ tune deadline scheduler ได้เพิ่มเติมอีก โดยที่ไฟล์ที่เกี่ยวข้องกับการ tune deadline scheduler นี้แสดงอยู่ด้านล่างครับ
/sys/block/DEVNAME/queue/iosched/read_expire /sys/block/DEVNAME/queue/iosched/write_expire /sys/block/DEVNAME/queue/iosched/fifo_batch /sys/block/DEVNAME/queue/iosched/write_starved /sys/block/DEVNAME/queue/iosched/front_merges
DEVNAME คือ ชื่อของ block device อย่างเช่น sda, sdb, hda เป็นต้น
ข้อมูลเพิ่มเติมเกี่ยวกับ deadline I/O scheduler สามารถดูได้ที่ : /usr/share/doc/kernel-[version]/Documentation/block/deadline-iosched.txt.
Tags: I/O scheduler, Red Hat Enterprise Linux, Video on Demand, Video on Demand server, VOD