By Arnon Puitrakul - 15 กรกฎาคม 2024
หลายวันก่อน นอน ๆ อยู่ก็นึกถึงการใช้เครื่องคอมพิวเตอร์สมัยก่อนขึ้นมา หนึ่งในสิ่งที่คนบอกว่าเป็นวิธีการทำให้เครื่องคอมพิวเตอร์เร็วขึ้นคือการทำ Disk Defragment มันทำให้เครื่องเร็วขึ้นอย่างที่เขาว่าจริงมั้ย แล้วทำไมปัจจุบันมันมีเทคโนโลยีอะไรเข้ามาช่วย ทำให้เราถึงไม่ต้องทำแล้ว
Disk Defragment เป็นกระบวนการที่เครื่องคอมพิวเตอร์จะย้ายข้อมูลที่กระจัดกระจายอยู่ในอุปกรณ์จัดเก็บข้อมูลของเราให้ไปวางอยู่ในที่ใกล้ ๆ กันอย่างเป็นระเบียบ
อ่านแล้ว อาจจะ งง ว่า ทำไมเราต้องทำแบบนั้นด้วยละ เราต้องเข้าใจกันก่อนว่า สมัยนั้นอุปกรณ์เก็บข้อมูลในเครื่องคอมพิวเตอร์ของเราจะใช้สิ่งที่เรียกว่า Hard Disk แบบจานหมุน ภายในประกอบด้วย จานแม่เหล็ก หลาย ๆ แผ่น หมุน ๆ ไป เมื่อถึงจุดที่มันต้องการ มันก็จะเอาหัวอ่านมาอ่านแม่เหล็กบริเวณนั้นออกมา
ดังนั้นเวลา Hard Disk มันจะหาข้อมูล หรือ เขียนข้อมูลลงไปสักที่หนึ่ง มันจะต้องวิ่งหาซะก่อน เมื่อเจอถึงจะเริ่มอ่านขึ้นมาได้ เวลาที่มันใช้หานั้น ภาษาคอมพิวเตอร์เราเรียก Seek Time ซึ่งเรากำลังคุยกันในหลัก 100 ms หรือมากกว่านั้นได้เลยละ แต่ความโชคร้ายที่บางครั้ง ไฟล์ที่ต้องการมันอาจจะโดนบันทึกอยู่ในหลาย ๆ บริเวณของจานแม่เหล็กก็ได้ ทำให้แค่เราจะเรียก 1 ไฟล์ เราอาจจะต้องมีการ Seek หรือหมุนหามากกว่าหนึ่งครั้ง ทำให้ใช้เวลานานมากกว่าจะโหลดอะไรขึ้นมาได้
การทำ Disk Defragment มันคือ การย้ายส่วนต่าง ๆ ของแต่ละไฟล์ที่มันอาจจะอยู่กระจัดกระจายกันเข้ามาไว้ในพื้นที่ต่อ ๆ กัน หรืออยู่ในพื้นที่ใกล้เคียงกัน ทำให้เวลาระบบเรียกไฟล์นั้น แทนที่มันจะต้องไปไล่หาเยอะ ๆ นาน ๆ มันก็จะเร็วขึ้นหน่อย คือมันไม่ได้เพิ่มความเร็วในการอ่านเขียนแต่อย่างใด แต่มันเข้าไปลด Seek Time จึงทำให้มันตอบสนองได้เร็วขึ้นนั่นเอง คนเลยบอกว่า มันทำให้เครื่องเร็วขึ้น แต่จริง ๆ แล้วมันคือ การทำให้การตอบสนองทำได้ดีขึ้นมากกว่า
สำหรับคำถามนี้ เราว่าหลาย ๆ คนน่าจะพอเดาคำตอบได้แล้วละ เราแบ่งออกเป็น 2 เหตุผลใหญ่ ๆ
เหตุผลแรกคือ ปัจจุบันราคา SSD ถูกลงเรื่อย ๆ จนทำให้ Consumer ส่วนใหญ่ขยับไปใช้งาน SSD กันหมดแล้ว ซึ่ง SSD นั้นไม่ได้ใช้กลไกการเคลื่อนไหวในการค้นหาข้อมูล แต่เป็นการใช้พวก Microchip แทนซึ่งทำงานด้วยสัญญาณไฟฟ้า ทำให้มันเร็วกว่าเดิมมาก ๆ หากใครที่อยู่ในยุคเปลี่ยนผ่านตอนนั้น น่าจะเป็นความแตกต่างได้ชัดเจนเลยแหละว่า มันต่างกันฟ้ากับเหวเลยทีเดียว
เหตุผลที่สองคือ ปัจจุบันเรามีวิธีการเขียนข้อมูลลงไปใน HDD โดยลดโอกาสการเกิด Fragment กระจัดกระจายอยู่ใน HDD ให้ได้มากที่สุด ซึ่งถูกนำไป Implement บน File System สมัยใหม่อย่าง NTFS และอื่น ๆ อีกมากมาย
แต่ถามว่า เรายังสามารถทำได้อยู่มั้ย จริง ๆ ได้ เช่นใน Windows Disk Defragment Tool ก็ยังมีอยู่ เราสามารถเข้าไปทำได้ แต่มันจำเป็นแบบสมัยก่อนมั้ย เราก็มองว่า ไม่แล้วละ ไม่ทำก็ไม่เป็นไร ทำก็... อาจจะเร็วขึ้นหน่อยเดียว
สำหรับการแก้ปัญหา Fragmentation บน HDD มีการนำหลากหลายวิธีเข้ามาแก้ไขด้วยกัน วันนี้เราจะยกมา 2 วิธีที่คิดว่า เข้าใจง่ายที่สุด และเป็นวิธีที่เราเจอกันในชีวิตประจำวัน
วิธีที่ 1 เรียกว่า Extends วิธีนี้เรียบง่ายมากคือ แทนที่จะเขียนลงไปบนพื้นที่แล้วไม่พอ ทำให้ต้องแตกเป็น Fragment วิธีการนี้บอกว่า เราจะหาพื้นที่ว่างขนาดพอดีกับไฟล์ที่ต้องการเขียนก่อน แล้วค่อยเขียนลงไปตรงนั้น ทำให้มันไม่เกิด Fragment ขึ้นมา วิธีการนี้ถูกนำไป Implement บน File System หลายตัว เช่นที่เราใช้กันใน Windows มานานอย่าง NTFS
และวิธีที่ 2 เรียกว่า Delayed Allocation ตอนอ่านเจอในหนังสือวิชา OS ครั้งแรกคือ ว๊อท ได้เหรอวะ คือ ก่อนที่เราจะเขียนไฟล์ลงไปใน HDD จริง ๆ มันจะทำการ Cache File ทั้งหมดลงไปบน Memory ก่อน เมื่อมันใกล้จะเต็ม มันจะไปสั่ง Allocate หรือเกลี่ยพื้นที่ว่างบน HDD แล้วค่อยเขียน File ที่อยู่บน Memory เรียงลงไปอย่างสวยงาม วิธีนี้เท่าที่เราอ่านมา ใช้ใน Linux File System อย่าง ext4 และอันที่ตกใจมากคือ APFS ของ Apple
มีหลายคนที่เชื่อกันว่า การทำ Disk Defragmentation ทำให้เครื่องเร็วขึ้นในทุก ๆ กรณี เลยมีความพยายามแปลก ๆ ที่จะเอาไปทำกับ SSD ซึ่งเราบอกก่อนเลยว่า มันทำให้ SSD เราพังเร็วกว่าเดิมมาก ๆ
ต้องเข้าใจกันก่อนว่า SSD นั้นแตกต่างจาก HDD โดยสิ้นเชิง ความแก่ชราของ SSD ส่วนใหญ่วัดจากจำนวนข้อมูลที่ได้เขียนเข้าไป ดังนั้น เมื่อเราพยายาม Defragment โดยการย้ายข้อมูลไปมา มันก็จะต้องเขียนข้อมูลลงไปในตำแหน่งใหม่ นั่นคือ เราจะเสียจำนวนข้อมูลที่คาดว่าจะยังสามารถเขียนเข้าไปได้แบบฟรี ๆ โดยที่ไม่ได้ทำให้อะไรเร็วขึ้นเลย
แต่กลับกัน SSD เขามีวิธีการบางอย่างเช่นกันที่ทำให้ ยืดอายุการใช้งานของมันไปได้ เรียกว่า TRIM สั้น ๆ คือมันจะพยายามกระจาย Cell สำหรับเก้บข้อมูล เพื่อไม่ให้ตัวใดตัวหนึ่งถูกเขียนมากเกินไป ทำให้ความเลื่อมโดยเฉลี่ยของแต่ละส่วนจะมีความใกล้เคียงกันนั่นเอง
ด้วยการเปลี่ยนวิธีการอ่านเขียนข้อมูลบน File System สมัยใหม่ ทำให้การ Defragmentation ค่อย ๆ หายไป กลายเป็นเรื่องที่คนโบราณมักจะพูดกัน (ชิท ! กรูนิ) เพราะ วิธีการที่ทำให้ลดโอกาสเกิด Fragment ได้ถูกนำมาใช้เป็นค่าเริ่มต้นกันไปแล้ว ประกอบกับระดับ Consumer ก็ค่อย ๆ ลดการใช้งาน HDD ด้วยเช่นกัน
นอกจากนั้น จริง ๆ ใน File System สมัยใหม่นั้นยังมีอีกหลาย Feature ที่น่าสนใจมาก ๆ เช่นใน APFS เวลาเราคัดลอกไฟล์ จริง ๆ แล้วมันไม่ได้เขียนข้อมูลนั้นลงไปจริง ๆ แต่มันแยกเป็นเงาออกมา แล้วเก็บเฉพาะส่วนที่ต่างเฉย ๆ อะไรพวกนั้น ไว้วันหลังเราจะมาเล่าให้อ่าน ส่วนถ้าใครอยากเรียนรู้เรื่องพวกนี้เพิ่มเติม ลองไปหาอ่านในหนังสือวิชา OS ได้ มีเรื่องสนุก ๆ เยอะมาก
หลังจากดูงาน Google I/O 2024 ที่ผ่านมา เรามาสะดุดเรื่องของการใส่ Watermark ลงไปใน Content ที่ Generate จาก AI วันนี้เราจะมาเล่าให้อ่านกันว่า วิธีการทำ Watermark ใน Content ทำอย่างไร...
ก่อนหน้านี้เราทำ Content เล่าความแตกต่างระหว่าง CPU, GPU และ NPU ทำให้เราเกิดคำถามขึ้นมาว่า เอาเข้าจริง เราจำเป็นต้องมี NPU อยู่ในตลาดจริง ๆ รึเปล่า หรือมันอาจจะเป็นแค่ Hardware ตัวนึงที่เข้ามาแล้วก็จากไปเท่านั้น วันนี้เราจะมาเล่าให้อ่านกัน...
บทความนี้ เราเขียนสำหรับมือใหม่ หรือคนที่ไม่ได้เรียนด้านนี้แต่อยากรู้ละกัน สำหรับวันนี้เรามาพูดถึงคำที่ถ้าเราทำงานกับพวก Developer เขาคุยกันบ่อย ๆ ใช้งานกันเยอะ ๆ อย่าง Database กันว่า มันคืออะไร ทำไมเราต้องใช้ และ เราจะมีตัวเลือกอะไรในการใช้งานบ้าง...
หากใครที่อายุใกล้ ๆ 30 ต้องเคยผ่านประสบการณ์โลกออนไลน์ในยุค 90s' มาไม่มากก็น้อย เป็นยุคที่เราเน้นใช้โปรแกรมเถื่อน ขายกันอยู่ในห้างพั____พ กันฉ่ำ ๆ ตำรวจตรวจแล้วเราไม่มีขายตัว แต่เคยสงสัยถึงที่มาของโปรแกรมเหล่านี้มั้ยว่า เขา Crack กันอย่างไร วันนี้เราจะมาเล่าให้อ่านกัน...