10 คะแนน โดย GN⁺ 2024-11-04 | 4 ความคิดเห็น | แชร์ทาง WhatsApp
  • systemd เป็นชุดแอปพลิเคชันแบบบูรณาการที่เกี่ยวข้องกับการจัดการระบบ ทำหน้าที่แทนกระบวนการ init แบบดั้งเดิม และครอบคลุมฟังก์ชันหลากหลาย เช่น การจัดการเซสชันผู้ใช้ การจัดการอุปกรณ์ การบันทึกล็อก และการตั้งเวลา
  • ผู้ใช้ Linux ส่วนใหญ่ไม่ได้สนใจข้อดีข้อเสียของ systemd มากนัก แต่บางส่วนก็ต่อต้านหรือสนับสนุนอย่างหนักแน่น
  • ดิสทริบิวชัน Linux กระแสหลักได้นำ systemd มาใช้ ซึ่งส่วนใหญ่เป็นเพราะข้อดีในสภาพแวดล้อมเดสก์ท็อปทั่วไป

ปัญหาใน Embedded Linux

  • ในระบบ Embedded ข้อดีของ systemd อาจกลับกลายเป็นข้อเสียได้
  • หากยกตัวอย่างการใช้หน่วยความจำบน Raspberry Pi 3B จะเห็นว่า systemd ใช้ทรัพยากรมากกว่า SystemV init
  • เดมอนบันทึกล็อกของ systemd เช่น systemd-journald ก็ใช้ทรัพยากรมากเช่นกัน
  • ในสภาพแวดล้อมแบบ Embedded จำเป็นต้องมีทางเลือกที่เล็กกว่า และ systemd ไม่ได้ถูกปรับแต่งมาให้เหมาะกับสภาพแวดล้อมลักษณะนี้

ความซับซ้อนของ systemd และเวลาในการบูต

  • systemd อาจช่วยลดเวลาในการบูตได้ แต่ในระบบ Embedded กลับอาจทำให้เวลาในการบูตเพิ่มขึ้น
  • ความซับซ้อนและฟังก์ชันของ systemd เป็นสิ่งจำเป็นในสภาพแวดล้อมทั่วไป แต่ในสภาพแวดล้อมแบบ Embedded มักไม่จำเป็น

การขาดหายไปของทางเลือก

  • บริการหลายอย่างที่ systemd เข้ามาแทนที่นั้นมีทางเลือกที่เล็กกว่าและเร็วกว่าในสภาพแวดล้อม Embedded แต่บางอย่างกลับไม่มีทางเลือกอีกต่อไป
  • ตัวอย่างเช่น เดมอน udev ถูกรวมเข้าไปในโครงการ systemd แล้ว และแทบไม่มีทางเลือกอิสระเหลืออยู่

การขยายตัวของ systemd และการลดลงของทางเลือก

  • systemd มีฟังก์ชันจำนวนมาก และมอบความสะดวกให้กับผู้ดูแลดิสทริบิวชัน
  • เมื่อ systemd ดูดซับฟังก์ชันเพิ่มขึ้นเรื่อย ๆ แรงจูงใจในการดูแลรักษาทางเลือกก็ลดลง
  • สิ่งนี้อาจก่อให้เกิดปัญหาได้ หาก systemd ไม่เหมาะสมกับสภาพแวดล้อมแบบ Embedded

บทสรุป

  • systemd อาจมีประสิทธิภาพน้อยกว่าทางเลือกแบบดั้งเดิมในสภาพแวดล้อม Embedded
  • การหาดิสทริบิวชัน Linux กระแสหลักที่ไม่ใช้ systemd กำลังยากขึ้นเรื่อย ๆ
  • การขยายตัวของ systemd กำลังพา Linux ไปสู่อนาคตที่ยากจะจินตนาการได้หากไม่มี systemd
  • จำเป็นต้องเตรียมพร้อมในการพัฒนาหรือดูแลรักษาทางเลือก และต้องสนับสนุนดิสทริบิวชันที่ไม่ใช้ systemd ต่อไป

4 ความคิดเห็น

 
iolothebard 2024-11-08

จะมีแค่ systemd ที่เป็นปัญหาก็คงไม่ใช่หรอก…

 
ganadist 2024-11-06

busybox ของ init เป็นทางเลือกที่ยอดเยี่ยมสำหรับ systemd สำหรับอุปกรณ์ฝังตัว
และหากเป็นระบบที่มีข้อจำกัดเหมือนอุปกรณ์ฝังตัว ก็ไม่จำเป็นต้องใช้ udev โดยสามารถรวม device node แบบคงที่ไว้ในรูทไฟล์ซิสเต็มได้

 
plaaat0102 2024-11-05

สำหรับผมแล้วอาจเป็นกรณียกเว้นในบรรดากรณียกเว้นก็จริง แต่ในฐานะคนที่ลง Ubuntu บน Galaxy Tab แล้วลง VS Code ใช้งานต่อบนนั้น บางทีก็ถึงกับอยากร้องไห้เพราะ systemd เหมือนกันครับ..

 
GN⁺ 2024-11-04
ความคิดเห็นจาก Hacker News
  • systemd แก้ปัญหาได้หลายอย่าง และชุมชนก็ตอบสนองไวและให้ความช่วยเหลือดีมาก

    • บางครั้งก็มีปัญหาแปลก ๆ แต่ก็มีทางแก้เสมอ
    • การใช้หน่วยความจำไม่ใช่ประเด็นสำคัญ และอุปกรณ์ Embedded Linux ส่วนใหญ่มี RAM มากกว่า 1GB
    • สำหรับอุปกรณ์ขนาดเล็กจะใช้ Zephyr หรือ FreeRTOS
  • OpenEmbedded/Yocto, Devuan, Gentoo รองรับ init system ได้หลายแบบ

  • Rustysd เป็นตัวจัดการบริการที่จำลองพฤติกรรมบางส่วนของ systemd

    • มีฟังก์ชันหลัก และสามารถมอบตัวจัดการบริการที่คล้าย systemd บนหลายแพลตฟอร์มได้
  • คนที่ชอบ systemd ส่วนใหญ่คือผู้ดูแลดิสทริบิวชัน

    • systemd รวมยูทิลิตีระบบหลายอย่างไว้ในบิลด์ขนาดใหญ่ตัวเดียว
  • ปรัชญา Unix คือการใช้เครื่องมือเล็ก ๆ มาแก้ปัญหา

    • systemd ในช่วงแรกมีขนาดเล็ก แต่ตอนนี้ถึงขั้นทำวิดีโอคอลผ่านเว็บได้แล้ว
  • runit ยอดเยี่ยมสำหรับการกำกับดูแลแอปพลิเคชันและบริการ

    • มีมาใน BusyBox และเบามาก
    • การตั้งค่าง่ายมาก และมีฟังก์ชัน logging รวมอยู่ด้วย
    • แทบจะเป็นการนำปรัชญา Unix มาปฏิบัติได้อย่างสมบูรณ์แบบ
  • สามารถรันระบบ embedded โดยไม่ใช้ udev ได้

    • ทำได้ในกรณีที่ใช้อุปกรณ์ต่อพ่วงแบบคงที่และ kernel module ที่กำหนดตายตัว
  • RPi เปลี่ยน form factor ของบอร์ดควบคุมอุตสาหกรรมให้กลายเป็นเดสก์ท็อป

    • ซอฟต์แวร์จำนวนมากไม่ได้ถูกเขียนโดยคำนึงถึงเซ็กเมนต์นี้
  • Chimera Linux กำลังไปในทิศทางที่น่าสนใจในด้านการจัดการบริการและการจัดการ login/seat

    • การที่ systemd ใช้ส่วนขยายของ gnulibc และ gcc เป็นปัญหา
  • ขนาดติดตั้งของ systemd คือปัญหาใหญ่ที่สุดใน Embedded Linux

    • บนอุปกรณ์ที่มี RAM 64M และ NAND flash 128M systemd ขนาด 5M ถือว่าไม่มีประสิทธิภาพ
  • systemd เป็นปัญหาใน Embedded Linux เพราะใช้ RAM 250MB

    • แต่ไม่ใช่ปัญหาใหญ่ในระบบที่ไม่ได้คำนึงถึงดิสทริบิวชันกระแสหลัก
  • SysVInit อาศัยยูทิลิตีภายนอกในการเริ่มและหยุดโปรเซส

    • แม้แต่กรณีขั้นต่ำที่สุดก็ยังต้องมี shell เพื่อรัน init script