สวัสดีทักทายทุกคนอีกเช่นเคยครับ วันนี้ผมหวินนั้นไม่ได้มารีวิวแอพพลิเคชั่นใหม่อะไร แต่จะมาพูดเรื่องใกล้ตัวที่หลายๆคนน่าจะเคยผ่านตาคุ้นๆคำว่า I/O Schedulers ตอนใช้แอพควบคุม CPU ต่างๆอย่างเช่น AnTuTu CPU Master, Trickster Mod, SetCPU เป็นต้นครับ ซึ่งมาเข้าเรื่องกันเลยดีกว่า
ทำไมต้องตั้งค่าค่า I/O Schedulers ด้วย ?
ตามทั่วไปแล้วทางผู้ผลิตมือถือ/แท็ปเล็ต จะไม่ให้ผู้ใช้ทั่วไปแก้ไขค่าเหล่านี้ได้เพราะอาจส่งผลต่อประสิทธิภาพการทำงานของเครื่อง แต่อย่างไรก็ตามเราก็ยังสามารถเข้าไปแก้ไขค่านี้ได้หากเครื่องผ่าน Root เครื่องแล้ว ซึ่งการแก้ไขค่าเหล่านี้ก็สามารถช่วยปรับแต่งประสิทธิภาพเครื่องรวมทั้งแบตเตอรี่ด้วยเช่นกันครับ (Scheduler บางตัวไม่มีมากับเครื่องครับ)
I/O Scheduler คืออะไร ?
Input/Output (I/O) นี่คือชื่อเต็มๆครับ ซึ่งหมายถึง วิธีการที่ระบบปฏิบัติการออกคำสั่งทำงานไปยังพื้นที่จัดเก็บเครื่อง หรือบางทีเราอาจจะเรียกว่า Disk scheduling ได้เช่นกันครับ
ซึ่งจุดประสงค์ของ I/O Schedulers ก็มีหลายอย่างได้แก่
ซึ่งจุดประสงค์ของ I/O Schedulers ก็มีหลายอย่างได้แก่
-ลดเวลาที่ต้องใช้จากการเรียกหาข้อมูล Hard disk
-เลือกลำดับความสำคัญตามที่ I/O ตั้งไว้
-แบ่งพื้นที่ส่งข้อมูล (Bandwidth) ขณะที่กำลังเรียกใช้ข้อมูลอื่นอยู่ (Multitasking)
คาดหวังอะไรจากการปรับ I/O Scheduler ?
-แบตเตอรี่ ที่ใช้ได้ยาวนานขึ้นในตาามปกติแล้ว (หรือบางทีก็เร็วเร็วหวบๆกันนะ ?!)
-ความเร็ว แน่นอนว่าเราทุกคนที่ Root เครื่องลง Kernel เพราะคาดหวังกับสิ่งพวกนี้
-ความเสถียร โดยบาง Scheduler ที่เราเลือกอาจจะเสถียรหรือไม่เสถียรก็ควรศึกษาให้ดีก่อน
-Multitasking ที่ดีขึ้น โดยตัวนี้ถือเป้นปัจจัยสำคัญของการตั้งค่าเลยก็ว่าได้ครับ บาง Scheduler เหมาะกับใช้ Multitasking ในขณะที่บางตัวเหมาะกับใช้เล่นแอพใดแอพหนึ่งมากกว่า (เล่นเกมกราฟฟิค)
-ความลื่นติดนิ้ว ! แน่นอนว่าคงจะไม่มีใครอยากใช้หน้าจอมือถือที่ภาพกระตุกเป็นช็อตๆหรอกครับการปรับพวกนี้ก็ช่วยได้ (อย่างเห็นผล)
XDA แหล่งรวม Rom, Kernel และทุกอย่างที่เกี่ยวกับ Android ที่ใหญ่ที่สุด |
*การทำงานในที่นี้หมายถึงการเรียกเปิดแอพ, คัดลอกไฟล์, Multitasking, อื่นๆ
1.Anticipatory เป็น Scheduler เกี่ยวกับ Algorithm ตัวหนึ่งที่ทำหน้าที่จัดการพื้นที่เครื่องของเรา แต่โอกาสที่จะเจอค่อนข้างน้อยมากสำหรับมือถือครับ
ข้อดี
-ทำหน้าที่รับอ่านข้อมูลการได้ดีมากโดยจะให้ความสำคัญเป็นอันดับแรกเสมอ
ข้อเสีย
-บางครั้งคำสั่งจากระบบจะใช้ไม่ได้
-ประสิทธิภาพของ Hard drive ที่เขียนข้อมูลความเร็วสูงจะลดลง
2.CFQ (Complete Fair Queuing) คอยทำหน้าที่รักษาความสมดุลของแต่ล่ะคำสั่งการใช้งานของเครื่องตามแต่ล่ะการใช้งานที่ทำงานอยู่โดยกระจายข้อมูลที่ส่งไปเท่าๆกัน (CPU ทำงานแชร์ๆกัน)
ข้อดี
-มีความสมดุลในด้านประสิทธิภาพ (ค่าปกติของเครื่องส่วนมากครับ)
-เหมาะสมการเครื่องที่มีหน่วยประมวลผลหลายๆตัว
-Multitasking ได้ดี
ข้อเสีย
-บางเครื่องอาจจะใช้เวลานานผิดปกติในการ Media Scanning (เช่นใส่ Sd card ครั้งแรก) เพราะว่า I/O ไม่ได้ออกคำสั่งให้การสแกน Sd card มาเป็นอันดับแรกทำให้การสแกนเสียเวลามาก
-บางเครื่องเกิดอาการดีเลย์หากต้องทำงานหลายๆอย่างพร้อมๆกัน
3.Deadline หลักการทำงานก็คล้ายๆกับชื่อมันครับ โดยจะพยายามลดช่วงเวลาดีเลย์ของการทำงานที่ใช้อยู่หรือออกคำสั่งให้มากที่สุด (อัพเดทข้อมูลเร็วครับคล้ายๆตอนเราดู Benchmark แล้วมีแสดงว่า Cpu ใช้งานหนักแค่ไหน) ซึ่งจะทำงานทีล่ะอย่างโดยพยายามทำแต่ล่ะอย่างให้เร็วที่สุดเท่าที่จะทำได้
ข้อดี
-ดีเลย์น้อยมากเกือบจะเป็น Realtime ที่ประมวลผลเลย
-เหมาะแก่การทำ Database วิเคราะห์
-ใช้งานกับ Benchmark ได้ดีเพราะแสดงผลแบบแทบจะ Realtime
-ทำงานเหมือนกับ Noop เหมาะกับอุปกรณ์ใช้ Solid State Drive (เพราะส่งข้อมูลทีล่ะลำดับเร็วครับ)
ข้อเสีย
ข้อดี
-ดีเลย์น้อยมากเกือบจะเป็น Realtime ที่ประมวลผลเลย
-เหมาะแก่การทำ Database วิเคราะห์
-ใช้งานกับ Benchmark ได้ดีเพราะแสดงผลแบบแทบจะ Realtime
-ทำงานเหมือนกับ Noop เหมาะกับอุปกรณ์ใช้ Solid State Drive (เพราะส่งข้อมูลทีล่ะลำดับเร็วครับ)
ข้อเสีย
ถ้าเกิดมือถือทำงานหนักเกินไปเครื่องจะดับหรือเกินอาการหลอนๆขึ้นมาทันที (Overclock สูงไป, ร้อนไป)
4.Row (แนะนำ) ถือเป็นตัวหนึ่งที่ผู้พัฒนามือถือต้องเลือกมาคิดไว้ก่อนเลย เพราะสำหรับระบบมือถือแล้วพวกเรานั้นมักจะใช้เล่นมากกว่าเป็นส่วนใหญ่ ทำให้ I/O ตัวนี้ออกแบบมาอ่านข้อมูลได้เร็วแต่ขณะเดียวกันก็ลดความเร็วการเขียนข้อมูล
ข้อดี
-UI เครื่องหรืออะไรต่างๆลื่นขึ้น (ผมใช้ตัวนี้อยู่ครับหลายๆท่านแนะนำมา)
-เปิดเครื่องและแอพพลิเคชั่นเร็วขึ้น
ข้อเสีย
-ไม่เหมาะกับ Multitasking หนักๆ
-การเขียนข้อมูลช้าลง
5.SIO หรือก็คือ Simple I/O นั่นเองครับ โดยมันก็มีหน้าที่ตามชื่อมันเช่นกัน โดยจะพยายามเฉลี่ยๆการทำงานทั่วไปให้ดีเลย์ต่ำเท่าที่ทำได้ แต่จะไม่มีการเรียงลำดับความสำคัญของงานที่ทำอยู่ (คล้ายๆ CFQครับ)
ข้อดี
-เสถียร
-ไม่กินแบตเตอรี่
ข้อเสีย
-เขียนข้อมูลช้า
-อ่านข้อมูลช้า
6.SIOPLUS เป็นตัวต่อยอดจาก SIO โดยการเขียนและอ่านข้อมูลจะดีขึ้นจากตัวเดิม
ข้อดี
-การเขียนและอ่านข้อมูลดีกว่า SIO ตัวเก่า
ข้อเสีย
-ประสิทธิภาพยังไม่ค่อยแน่นอน
-ไม่เจอใน Kernel ทั่วไป
6.Noop ถ้ามีการใช้งานใดๆเกิดขึ้น Noop จะพยายามใช้ CPU ให้น้อยที่สุด
ข้อดี
-ประหยัดแบตเพราะ CPU ทำงานน้อย
ข้อเสีย
-ลดประสิทธิภาพทำให้เครื่องช้า
7.BFQ จะให้ความสำคัญกับงานที่เกี่ยวข้องกับพื้นที่จัดเก็บเป็นส่วนมาก
ข้อดี
-ตอนย้ายไฟล์ด้วยสาย USB จะเร็วกว่าปกติ
ข้อเสีย
-ใช้งาน Benchmark ไม่ดี
8.VR
ข้อดี
-การข้อมูลดีขึ้นกว่าปกติ
ข้อเสีย
-บางครั้งการทำงานของ Scheduler เองก็ไม่ได้ผล
-บางครั้งไม่เสถียร
8.ZEN เป็น I/O ที่ต่อยอดมาจาก VR
ข้อดี
-ถือเป็น I/O ที่ดีตัวหนึ่งสมดุล
-เสถียรกว่า VR
ข้อเสีย
-บางครั้งการทำงานของ Scheduler เองก็ไม่ได้ผล
-บางครั้งไม่เสถียร
9.FFIOPS หรือชื่อ Fair IOPS โดยตัวนี้ยัวไม่นิยมใช้แพร่หลายแต่ได้ผ่านการปรับแต่งมาเป็นพิเศษเพื่อแก้ไขข้อเสียบางจุดของ CFQ
ข้อดี
-ประสิทธิภาพการทำงานใน Benchmark สูงกว่าปกติทั้งด้านอ่านและเขียนข้อมูล
-เปิดเครื่องและการทำงานของแอพพลิเคชั่นเร็วขึ้น
-แบตเตอรี่อึด
ข้อเสีย
-แทบจะไม่พบเจอใน Kernel ไหนเลย
-บางครั้งอาจจะกระตุก
-ไม่เหมาะกับการใช้ Multitasking หนักๆพร้อมๆกัน
10.FIFO หรือชื่อ First in first out ทำหน้าที่ตามตัวมันเองเลย คืออะไรมาก่อนไปก่อนมาหลังไปหลัง
ข้อดี
-พยายามทำงานด้วย CPU ที่น้อยที่สุดเท่าที่จะทำได้ (ประหยัดแบตเตอรี่)
-ใช้เป็น DB system ได้ดี
ข้อเสีย
-ประสิทธิภาพช้าลงเพราะ CPU ทำงานไม่เต็มที่
*(LG optimus 4x ตั้งไว้ที่ 2048KB จากเครื่องปกติ แต่บางคนใน XDA แนะนำว่าตั้งที่ 3072 KB จากที่ลองตั้งแล้วก็ไม่พบปัญหาใดๆครับ)
ขอบคุณข้อมูลดีๆจาก XDA, GS STUDIO
ข้อดี
-เสถียร
-ไม่กินแบตเตอรี่
ข้อเสีย
-เขียนข้อมูลช้า
-อ่านข้อมูลช้า
6.SIOPLUS เป็นตัวต่อยอดจาก SIO โดยการเขียนและอ่านข้อมูลจะดีขึ้นจากตัวเดิม
ข้อดี
-การเขียนและอ่านข้อมูลดีกว่า SIO ตัวเก่า
ข้อเสีย
-ประสิทธิภาพยังไม่ค่อยแน่นอน
-ไม่เจอใน Kernel ทั่วไป
6.Noop ถ้ามีการใช้งานใดๆเกิดขึ้น Noop จะพยายามใช้ CPU ให้น้อยที่สุด
ข้อดี
-ประหยัดแบตเพราะ CPU ทำงานน้อย
ข้อเสีย
-ลดประสิทธิภาพทำให้เครื่องช้า
7.BFQ จะให้ความสำคัญกับงานที่เกี่ยวข้องกับพื้นที่จัดเก็บเป็นส่วนมาก
ข้อดี
-ตอนย้ายไฟล์ด้วยสาย USB จะเร็วกว่าปกติ
ข้อเสีย
-ใช้งาน Benchmark ไม่ดี
8.VR
ข้อดี
-การข้อมูลดีขึ้นกว่าปกติ
ข้อเสีย
-บางครั้งการทำงานของ Scheduler เองก็ไม่ได้ผล
-บางครั้งไม่เสถียร
8.ZEN เป็น I/O ที่ต่อยอดมาจาก VR
ข้อดี
-ถือเป็น I/O ที่ดีตัวหนึ่งสมดุล
-เสถียรกว่า VR
ข้อเสีย
-บางครั้งการทำงานของ Scheduler เองก็ไม่ได้ผล
-บางครั้งไม่เสถียร
9.FFIOPS หรือชื่อ Fair IOPS โดยตัวนี้ยัวไม่นิยมใช้แพร่หลายแต่ได้ผ่านการปรับแต่งมาเป็นพิเศษเพื่อแก้ไขข้อเสียบางจุดของ CFQ
ข้อดี
-ประสิทธิภาพการทำงานใน Benchmark สูงกว่าปกติทั้งด้านอ่านและเขียนข้อมูล
-เปิดเครื่องและการทำงานของแอพพลิเคชั่นเร็วขึ้น
-แบตเตอรี่อึด
ข้อเสีย
-แทบจะไม่พบเจอใน Kernel ไหนเลย
-บางครั้งอาจจะกระตุก
-ไม่เหมาะกับการใช้ Multitasking หนักๆพร้อมๆกัน
10.FIFO หรือชื่อ First in first out ทำหน้าที่ตามตัวมันเองเลย คืออะไรมาก่อนไปก่อนมาหลังไปหลัง
ข้อดี
-พยายามทำงานด้วย CPU ที่น้อยที่สุดเท่าที่จะทำได้ (ประหยัดแบตเตอรี่)
-ใช้เป็น DB system ได้ดี
ข้อเสีย
-ประสิทธิภาพช้าลงเพราะ CPU ทำงานไม่เต็มที่
I/O Read ahead cache คืออะไร ?
ถ้าหากใครลง Custom rom/ Kernel มาแล้วก็น่าจะเคยผ่านหูผ่านตากันบ้างครับซึ่งมันคือคือไฟล์ Cache ที่เก็บไว้หลังจากเราพึ่งใช้งานไฟล์นั้นไป (คล้ายๆ Ram) ซึ่งการที่มีไฟล์นี้อยู่นั้นทำให้เราเข้าไปใช้งานได้ทันทีไม่ต้องรอเรียกโหลดข้อมูลใหม่โดยปกติแล้ว Android จะตั้งไว้ที่ 128 KB ซึ่งถ้ายิ่งมาก ก็แสดงว่า Cache ยิ่งใหญ่อาจจะทำให้เครื่องดีเลย์ได้ได้หากตัวเครื่องมีความเร็วไปสอดคล้องกับค่า Read ahead cache ครับ*(LG optimus 4x ตั้งไว้ที่ 2048KB จากเครื่องปกติ แต่บางคนใน XDA แนะนำว่าตั้งที่ 3072 KB จากที่ลองตั้งแล้วก็ไม่พบปัญหาใดๆครับ)
ใช้งานอย่างไร ?
จากทั้งหมดที่ผมได้กล่าวไปสิ่งหนึ่งที่ขาดไมไ่ด้เลยกคือต้อง "Root เครื่อง" สำหรับแอพที่ใช้ควบคุมได้ดีนั้นมีหลายตัวเช่น Antutu, Cpu Control และอื่นๆแต่ที่ดีที่สุดสำหรับผมคือ
Trickster Mod ควบคุมได้เฉียบ 10/10
โดยตัวนี้ถือว่าครอบคลุมทุกด้านรองรับถึง Overclock GPU, Voltage ด้วย (Kernel ต้องรองรับ) ถือว่าหาได้ยากครับสำหรับแอพที่รองรับ นอกจากนั้นยังฟรีอีกด้วย
Downlaod : คลิก
อะไรเหมาะกับเรา ?
ซึ่งจากที่ผมบอกไปก็ได้ครอบคลุม I/O ของหลายๆ Kernel กันไปแล้วครับ ซึ่งถ้าถามว่าอันไหนดีสุด ? ผมคิดว่าน่าจะเป็นที่ตัวเราเองว่าเราชอบอะไรมากกว่า อย่างตอนนี้ตัวผมใช้ ROW เพราะรู้สึกว่าเป็นกลางและตรงกับการใช้งานของผมมากที่สุด เพราะตัวผมเป็นคนเล่นเกมเป็นหลัก ไม่เน้น Multitasking ทำให้ตัวนี้จึงตอบโจทย์ได้ดี ดังนั้นหากเราจะใช้อะไรก็ให้ลองไปเลยครับ ว่าตัวเราชอบใช้งานแบบไหนกันแน่ สุดท้ายนี้ผมก็หวังว่าทุกๆคนคงจะได้ประโยชน์บ้างจากบทความนี้
ที่สำคัญต้องขอขอบคุณ XDA, GS Studio ถ้าหากไม่มีข้อมูลดีๆนี้จากพวกเขา ผมเองก็คงไม่สามารถที่จะเขียนบทความนี้ได้เช่นกันครับ
ที่สำคัญต้องขอขอบคุณ XDA, GS Studio ถ้าหากไม่มีข้อมูลดีๆนี้จากพวกเขา ผมเองก็คงไม่สามารถที่จะเขียนบทความนี้ได้เช่นกันครับ
http://androidmodguide.blogspot.com/p/io-schedulers.html
http://forum.xda-developers.com/showthread.php?t=1989824
Thank you for your information !
ต้นฉบับโดย GS STUDIO
แปลภาษาไทยโดย หวิน
*เป็นการแปลบทความเชิงลึกครั้งแรก ยินดีรับคำแนะนำเพื่อปรับปรุงครับ
**แบ่งปันทุกคนได้ฟรี !
http://forum.xda-developers.com/showthread.php?t=1989824
Thank you for your information !
ต้นฉบับโดย GS STUDIO
แปลภาษาไทยโดย หวิน
*เป็นการแปลบทความเชิงลึกครั้งแรก ยินดีรับคำแนะนำเพื่อปรับปรุงครับ
**แบ่งปันทุกคนได้ฟรี !