Speed Up Ubuntu 15.04(Vivid Vervet) Shutdown Process

เรื่องระยะเวลาการ Shutdown ของ Ubuntu 15.04 (Vivid Vervet) นี่ยังไม่จบนะ หงุดหงิดนิดหน่อย ยิ่งช่วงเวลารีบ ๆ แล้วต้องรอแบบใจเย็น ๆ ยิ้มสวย ๆ นี่  ?

ตอนนี้ยังหาวิธีไม่ได้และไม่อยากกลับไปใช้ Upstart งั้นก็มาดูคร่าว ๆ กันว่าช่วงเวลา Shutdown นี่เครื่องทำอะไรกันแน่ ไปซื้อซีอิ๊ว ที่ไหนถึงได้ต้องรออะไรขนาดนั้น

เปิดไฟล์ /etc/default/grub

sudo nano /etc/default/grub

OP-EditGrub
แก้ไขบรรทัด GRUB_CMDLINE_LINUX_DEFAULT ลบ quiet splash แล้วก็ update-grub ซะ

sudo update-grub

หลังจากที่ดูความเปลี่ยนแปลงพบว่าระบบรอ Stop Service บางตัว บาง Service นี่รอปาไป 5 นาที  (MySQL) อืมม รู้สึกว่าจะรอนานไปนะครับ คงแก้ปัญหาเฉพาะหน้าหล่ะกัน งั้นก็ Stop มันก่อนที่มันจะโดนระบบจัดยัดเข้าคิวรอโดน Stop

declare -a services=("mysql" "nginx")
bool=false

confirm () {
    # call with a prompt string or use a default
    read -r -p "${1:-Are you sure? [y/N]} " response
    case $response in
        [yY][eE][sS]|[yY]) 
            true
            ;;
        *)
            false
            ;;
    esac
}

for service in "${services[@]}"
do
    ps auxw | grep $service | grep -v grep > /dev/null
    if [ $? != 0 ]
    then
        sudo systemctl start $service.service > /dev/null;	
    else
        bool=true
        sudo systemctl stop $service.service > /dev/null;	
    fi
done

if [ "$bool" = "true" ]; then
	confirm "Shut down, Are you sure? [y/N]" && shutdown -h now
fi

ปล.เผอิญก่อนหน้ากำหนด Service บางตัวไว้ว่าไม่ให้เริ่มทำงานอัตโนมัติไว้ รวม Start เผื่อไว้ด้วยหล่ะกัน ?

Ubuntu 15.04 (Vivid Vervet) keep service from starting automatically

ปัญหานึงที่กวนใจนิดหน่อยหลังจากที่เปลี่ยนมาใช้ Ubuntu 15.04 คือช่วงการ Boot และ Shutdown โดยรวมแล้วใช้เวลานานขึ้นพอสมควร หมายถึงเมื่อเปรียบเทียบกับเวอร์ชั่นเดิม(14.10) คือดูล่าสุดใช้ไป 13.28 วินาทีเลยทีเดียว เพิ่มขึ้นมานิดหน่อย เริ่มวิเคราะห์ปัญหากัน (ที่จริงก็โทษ Systemd ไปแล้วหล่ะ ^_^)

  1. เริ่มด้วยการดูเวลารวมกัน โดยใช้คำสั่ง systemd-analyze รูปแบบ
    systemd-analyze — Analyze system boot-up performance
    Synopsis
    systemd-analyze [OPTIONS…] [time] systemd-analyze [OPTIONS…] blame
    systemd-analyze [OPTIONS…] critical-chain [UNIT…] systemd-analyze [OPTIONS…] plot [> file.svg] systemd-analyze [OPTIONS…] dot [PATTERN…] [> file.dot] systemd-analyze [OPTIONS…] dump
    systemd-analyze [OPTIONS…] set-log-level [LEVEL] systemd-analyze [OPTIONS…] verify [FILES…]
    systemd-analyze time
    systemd-analyze blame

    keepservicefrom-001
    พบว่ามี Service ที่ใช้เวลานานกว่าชาวบ้านอยู่ 2 ตัวคือ mysql และ NetworkManager-wait-online

  2. งั้นก็เปลี่ยน Service บางรายการให้ทำงานเมื่อต้องการหล่ะกัน (ค่า Default ตอนติดตั้ง Service บางตัวก็เริ่มทำงานเลยนะ แจ๋นจริง ๆ )
    sudo systemctl [enable/disable] mysql

    keepservicefrom-003

  3. มาดูผลลัพธ์กัน
    keepservicefrom-004
    ลดลงมาตั้ง 1 วินาที 😛
  4. ส่วนเรื่องปัญหาตอน Shutdown ก็คงรอไปอีกสักพัก หลาย ๆ ความเห็นคือถอน Systemd กันเลย คือไม่ได้รีบขนาดนั้น ให้โอกาสเค้าปรับปรุงก่อนดิ

เพิ่มเติม

  • Ubuntu เวอร์ชั่นเดิม ( < 15.04) ที่ใช้ Upstart
    echo manual | sudo tee /etc/init/mysql.override
  • Improve boot performance: https://wiki.archlinux.org/index.php/Improve_boot_performance