เจาะลึกการสร้าง ratatop โมดูลเครือข่ายของ btop ในภาษา Rust
ผู้พัฒนา Maneshwar เผยเบื้องหลังการสร้างมอนิเตอร์เครือข่ายสำหรับ btop ในภาษา Rust พร้อมแก้ปัญหาหน่วยความเร็วอินเทอร์เน็ตและการคำนวณกราฟอัปโหลด

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- การพัฒนาโมดูลเครือข่ายของ btop ในภาษา Rust ดำเนินมาถึงวันที่สี่
- แก้ปัญหาความสับสนเรื่องหน่วยความเร็วระหว่างบิตและไบต์ที่ ISP ใช้
- ใช้สเกลความเร็วร่วมกันระหว่างดาวน์โหลดและอัปโหลดเพื่อการเปรียบเทียบที่ถูกต้อง
- ดึงข้อมูล IP ผ่านฟังก์ชัน getifaddrs(3) และจัดการกับไฟล์ /proc/net/dev
Maneshwar ผู้พัฒนาโปรเจกต์ git-lrc ซึ่งเป็น Micro AI code reviewer กำลังอยู่ในวันที่สี่ของการสร้างระบบมอนิเตอร์สไตล์ btop ด้วยภาษา Rust และไลบรารี ratatui โดยในตอนนี้ส่วนของซีพียู หน่วยความจำ และดิสก์ได้เสร็จสิ้นลงแล้ว และล่าสุดส่วนของกล่องเครือข่าย (network box) ก็ถูกเพิ่มเข้ามา ทำให้ตอนนี้ btop เวอร์ชันนี้มีกล่องหลักครบสามจากสี่ส่วน
กระบวนการพัฒนาในส่วนนี้มีประเด็นสำคัญที่ต้องคิดทบทวนอย่างจริงจังอยู่สามเรื่องด้วยกัน ได้แก่ สถานการณ์เรื่องหน่วยวัด (unit situation) การใช้สเกลร่วมกัน (shared scale) และความจริงที่ว่ากราฟอัปโหลดถูกกลับหัวเอาไว้โดยตั้งใจ
ปัญหาเรื่องหน่วยวัดเริ่มต้นจากความจริงที่ว่า ผู้ให้บริการอินเทอร์เน็ต (ISP) ขายความเร็วอินเทอร์เน็ตให้เราเป็นบิตต่อวินาที (เช่น แพ็กเกจ 100 Mbps หรือ 300 Mbps) ในขณะที่โปรแกรมจัดการดาวน์โหลด เบราว์เซอร์ และการย้ายไฟล์ทุกรูปแบบจะรายงานความเร็วเป็นไบต์ต่อวินาที ส่งผลให้แพ็กเกจ 100 Mbps ที่เราซื้อมาจะมีความเร็วสูงสุดอยู่ที่ประมาณ 12.5 MB/s บนแถบความคืบหน้า และทำให้หลายคนเข้าใจผิดว่าอินเทอร์เน็ตมีปัญหา ทั้งที่มันทำงานตรงตามที่ขายทุกประการ โมดูลนี้จึงแสดงผลทั้งสองหน่วยควบคู่กันไป เพื่อให้ผู้ใช้เทียบกับแพ็กเกจและไฟล์ดาวน์โหลดได้ทันทีโดยไม่ต้องคำนวณในหัว

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
การแสดงผลความเร็วอินเทอร์เน็ตในหน่วยที่แตกต่างกันระหว่าง ISP (Bits) และซอฟต์แวร์ดาวน์โหลด (Bytes) เป็นสาเหตุคลาสสิกที่ทำให้ผู้ใช้งานสับสนมาอย่างยาวนาน การที่เครื่องมืออย่าง btop นำเสนอทั้งสองค่าพร้อมกันช่วยลดความเข้าใจผิดได้อย่างยอดเยี่ยม โดยใช้ตัวหาร 1024 ตามมาตรฐานทางคอมพิวเตอร์ ซึ่งแม้แต่ความผิดพลาดเพียงเล็กน้อยในตัวเลขทศนิยมก็อาจทำให้ผู้ใช้ประเมินประสิทธิภาพเครือข่ายคลาดเคลื่อนได้
ในด้านการแสดงผลกราฟ กราฟสองอันทางด้านซ้ายจะแบ่งเป็นดาวน์โหลดอยู่ด้านบนและอัปโหลดอยู่ด้านล่าง โดยกราฟด้านล่างจะถูกกลับหัวและเติบโตจากขอบด้านบนลงมา เนื่องจากวิดเจ็ต BrailleGraph เดิมรองรับการวาดจากล่างขึ้นบนเท่านั้น การปรับแก้จึงกินเวลาเพียงสี่บรรทัด แต่จุดที่สำคัญกว่าคือเรื่องของสเกล หากปล่อยให้กราฟแต่ละอันปรับสเกลตามค่าสูงสุดของตัวเอง จะทำให้การอัปโหลดที่ระดับ 3 KB/s และการดาวน์โหลดที่ 3 MB/s ถูกวาดด้วยความสูงเท่ากันจนดูเหมือนมีปริมาณเท่ากัน ดังนั้นจึงต้องใช้สเกลที่คำนวณร่วมกันจากฝั่งที่พุ่งสูงกว่า
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น