4 điểm bởi GN⁺ 2024-09-02 | 1 bình luận | Chia sẻ qua WhatsApp

Tối ưu hóa khởi động Pi đến cực hạn

Động lực

  • Dự án SolarCamPi là một dự án xây dựng camera WiFi dùng năng lượng mặt trời hoạt động off-grid.
  • Dự án sử dụng Raspberry Pi Zero 2 W để lặp lại quy trình khởi động bằng Linux, chụp ảnh, thiết lập kết nối WiFi rồi tắt nguồn.
  • Trong thiết bị dùng năng lượng mặt trời, điện năng là tài nguyên quý giá, vì vậy việc rút ngắn thời gian khởi động để giảm thiểu mức tiêu thụ điện là rất quan trọng.

Thiết lập phần cứng

  • Khi tối ưu quy trình khởi động nhúng, thời gian chu kỳ ngắn là yếu tố quan trọng.
  • Có một số công cụ hữu ích:
    • Nordic Power Profiler Kit II
    • USB-SD-Mux
    • bộ chuyển đổi USB-UART

Thiết lập đo lường / kiểm thử

  • Trên ảnh Debian 12 (bookworm) arm64 Lite, chỉnh sửa tệp /boot/firmware/cmdline.txt để thêm init=/init.sh.
  • Script init.sh sẽ bật/tắt GPIO4 rồi tiếp tục quá trình khởi động bình thường.

Giảm dòng điện

  • Tắt HDMI: giảm mức tiêu thụ dòng điện từ 136.7mA xuống 122.6mA.
  • Tắt LED hoạt động: tiết kiệm 2mA.
  • Tắt LED camera: chống phản xạ và tiết kiệm dòng điện.
  • Điều chỉnh chế độ turbo: tắt chế độ turbo để dùng 1.58As.

Giảm thời gian

  • Tắt probing HDMI trong quá trình khởi động: hard-code thông tin EDID để tiết kiệm thời gian.
  • Tắt probing HAT, PoE và LCD: giảm thời gian chờ phản hồi I2C.
  • Tắt probing camera và màn hình: nạp thủ công cảm biến IMX477.
  • Tắt initramfs: giảm thời gian khởi động từ 5.38s xuống 4.47s.

Tải kernel

  • Tải kernel là một trong những tác vụ chậm nhất.
  • Overclock lõi xử lý GPU: giảm thời gian tải kernel 20%.
  • Di chuyển hệ thống sang bản phân phối Buildroot tùy chỉnh: giảm kích thước kernel và loại bỏ các tính năng không cần thiết.

Kết quả cuối cùng

  • Có thể khởi động chương trình không gian người dùng Linux trong vòng dưới 3.5 giây.
  • Tổng mức tiêu thụ năng lượng: 0.364 As * 5.0 V = 1.82 Ws.
  • Giảm mức tiêu thụ năng lượng xuống 5 lần so với Debian mặc định.

Tóm tắt của GN⁺

  • Bài viết này nói về cách tối ưu thời gian khởi động của Raspberry Pi để giảm tiêu thụ điện năng.
  • Rất hữu ích trong các môi trường điện năng hạn chế như thiết bị chạy bằng năng lượng mặt trời.
  • Các dự án có chức năng tương tự gồm OpenWRT, Tiny Core Linux, v.v.
  • Bài viết đưa ra nhiều cách rút ngắn thời gian khởi động, hữu ích cho những ai quan tâm đến tối ưu hệ thống nhúng.

1 bình luận

 
GN⁺ 2024-09-02
Ý kiến trên Hacker News
  • Vấn đề về điện năng của dòng sản phẩm rpi là một điểm yếu. Hy vọng pico 2 mới sẽ cải thiện được điều này

    • Đã dùng Google Coral mini để làm camera, nhưng hỗ trợ cho camera HQ còn thiếu
    • Hệ sinh thái rpi trưởng thành hơn và khả năng sẵn có trong tương lai cũng đáng tin cậy hơn
    • Đã làm phiên bản camera tiếp theo bằng rpi và dùng pin lớn hơn
    • Đang tìm cách xử lý số Coral mini và camera còn lại
  • Tò mò vì sao kernel tùy chỉnh lại ra muộn

    • Nếu muốn tối ưu hóa thì có vẻ nên dùng LFS hoặc bản phân phối dựa trên mã nguồn
    • Tò mò liệu có thể tối ưu EFI/BIOS hay không
    • Thời gian khởi động trên desktop Arch Linux mất khá lâu
  • Tự hỏi việc vô hiệu hóa CPU turbo có phải là lựa chọn tệ để giảm mức tiêu thụ điện năng hay không

    • Khi xung nhịp tăng thì mức tiêu thụ điện năng tăng theo bình phương
    • Cần đo chênh lệch điện năng mới biết được việc tăng xung có lợi hay không
    • Sẽ tốt hơn nếu CPU của Pi cung cấp thông tin tiêu thụ điện năng chi tiết
  • Tò mò liệu có thể dùng lõi khác hay không, và việc chụp ảnh rồi gửi lên đám mây có thực sự cần Linux không

    • Tò mò về cách hoàn thành công việc với ngân sách tối thiểu
    • Đây là một bài đọc thú vị
  • Giới thiệu hai bài viết hay về việc giảm thời gian khởi động Pi

  • Nếu thích hệ sinh thái Rasp Pi thì Pi Pico W đáng để thử

  • Thời gian khởi động của các bản phân phối Linux nhìn chung là chậm

    • Đặc biệt còn chậm hơn trên phần cứng yếu
    • Cũng đã gặp vấn đề tương tự trên MQ-Pro SBC
    • Cảm nhận thấy điều này cả trên laptop (trừ Macbooks)
  • Tốt hơn là giữ nguyên trạng thái khởi động và dùng vi điều khiển công suất thấp

    • 105mA không phải mức tiêu thụ điện năng hợp lý
  • Từng nghĩ Circle có thể khởi động nhanh hơn kernel, nhưng nó không hỗ trợ camera MIPI

  • Đã định dùng Pi để tạo một camera bẫy đường mòn thông minh

    • Thời gian khởi động rất quan trọng
    • Việc giảm mức sử dụng điện năng là rất tốt