5 điểm bởi GN⁺ 2025-08-01 | 2 bình luận | Chia sẻ qua WhatsApp
  • Trải nghiệm tình trạng tiêu thụ pin suốt đêm trên MacBook Pro Silicon M1 Max
  • Đã thử phân tích nhật ký quản lý năng lượng trực tiếp, nhưng khả năng xác định nguyên nhân có hạn
  • Có thể quan sát trực quan wake event bằng ứng dụng chuyên dụng Sleep Aid
  • Phát hiện nguyên nhân là tính năng "Wake for maintenance" trong cài đặt Sleep Aid bị vô hiệu hóa
  • Sau khi kích hoạt lại tùy chọn này, vấn đề tiêu thụ pin suốt đêm đã được giải quyết

Kinh nghiệm với hiện tượng pin hao hụt suốt đêm trên MacBook Pro

  • Đã có kinh nghiệm sử dụng MacBook Pro Silicon M1 Max trong nhiều năm
  • Gần đây xuất hiện triệu chứng pin giảm mạnh suốt đêm khi không cắm nguồn cho máy
  • Triệu chứng ngày một nặng hơn, khiến tôi bắt đầu tự phân tích nguyên nhân trực tiếp

Thử phân tích nhật ký quản lý nguồn

  • Trên macOS có thể kiểm tra nhật ký liên quan đến quản lý nguồn bằng lệnh terminal pmset -g log
  • Vì đầu ra log rất lớn và khó diễn giải, tôi đã sử dụng một công cụ đơn giản do chính mình phát triển là pmset-analyzer để phân tích log
  • Tuy nhiên, công cụ này cũng không giúp nhiều cho việc giải quyết thực tế

Điều chỉnh cài đặt chi tiết và điều tra thêm

  • Điều chỉnh từng cài đặt quản lý nguồn như tcpkeepalive theo hướng dẫn từ tài liệu chính thức và cộng đồng
  • Chỉ thay đổi cài đặt chưa mang lại tác động lớn đến việc giải quyết vấn đề

Giải quyết vấn đề qua ứng dụng Sleep Aid

  • Trong quá trình điều tra thêm, tôi biết đến ứng dụng Sleep Aid
    • Ứng dụng này giúp hiển thị trực quan wake event và cung cấp giao diện để thay đổi một cách trực quan các cài đặt quản lý nguồn khác nhau
  • Khi kiểm tra bằng Sleep Aid, thấy rằng tùy chọn "Wake for maintenance" đã bị vô hiệu hóa
  • Theo mô tả của ứng dụng, nếu cài đặt này bị tắt, có thể xảy ra wake event thường xuyên
  • Tôi đã kích hoạt lại tùy chọn này, sau đó hiện tượng tiêu hao pin suốt đêm không còn xảy ra nữa

2 bình luận

 
ahwjdekf 2025-08-02

Mình để MacBook ở chế độ ngủ rồi đi ngủ, vậy mà rạng sáng tự nhiên màn hình bật lên làm cả phòng sáng trưng. Nhiều lần đang ngủ bị đánh thức nên mình đành tắt hẳn luôn. Chuyện này bị bàn tán từ bao giờ rồi mà đến giờ vẫn thế...

 
GN⁺ 2025-08-01
Ý kiến trên Hacker News
  • Lại là một mẹo hữu ích khác. Mở tab Energy trong Activity Monitor rồi sắp xếp theo cột "Preventing sleep" để xem ứng dụng nào đang ngăn macOS ngủ. Trường hợp của tôi thì thủ phạm là ứng dụng Devonthink. Tôi vẫn chưa gửi bug report. Thật khó hiểu khi tính năng quản lý điện năng của Apple không thông báo cho người dùng về kiểu vấn đề này. Chẳng phải việc máy Mac nóng rực trong túi và cạn pin là một vấn đề quan trọng sao? Trong khi đó, việc Chrome liên tục hỏi có cho phép tìm thiết bị mạng hay không có vẻ kém quan trọng hơn nhiều
    • Việc quản lý điện năng của Apple không cảnh báo về chuyện này đã đáng ngạc nhiên, nhưng điều còn đáng ngạc nhiên hơn là ngay cả khi đóng nắp, một ứng dụng vẫn có thể ngăn hệ thống ngủ. Tôi hiểu là đôi khi cần cơ chế chặn ngủ theo timeout, chẳng hạn như trình phát video. Nhưng để ứng dụng quyết định hệ thống không được ngủ khi đóng nắp hoặc bấm nút ngủ thì gần như không có mấy ví dụ thật sự hữu ích. Trong đa số trường hợp, điều này chỉ làm tăng khả năng bạn mang theo một chiếc laptop bị quá nhiệt trong ba lô. Hơn nữa, chỉ một trang web thôi cũng có thể khiến hệ thống không vào trạng thái ngủ, nên rất khó tìm ra tab nào trong 70 tab là thủ phạm. Sẽ tốt hơn nếu tách riêng quyền chặn ngủ theo timeout với quyền thay đổi hành vi cốt lõi như "đóng nắp là phải ngủ". Có thể cho phép dùng timeout, nhưng những thứ như đóng nắp thì bắt buộc phải thông báo và xin phép người dùng
    • Tôi không biết là bất kỳ ứng dụng nào cũng có thể chặn sleep của toàn hệ thống. Loại quyền này lẽ ra phải nằm dưới sự kiểm soát của người dùng. Tôi tự hỏi liệu nhà phát triển có nên cần ít nhất một entitlement mới được gọi các API như vậy không
    • Trong shell, bạn có thể dùng lệnh pmset -g assertions để biết tiến trình nào đang ngăn hệ thống ngủ và xem chi tiết các power assertion đang chờ. pmset còn có những lệnh không có trong tài liệu chính thức, nhưng có thể thấy nếu xem mã nguồn mà Apple công khai. Cũng có lệnh để buộc bỏ qua một assertion cụ thể. Chỉ là nếu tắt assertion "UserIsActive" thì có thể bạn sẽ gặp khó khăn khi đánh thức hệ thống
    • Tôi không biết có tính năng này, cảm ơn. Gần đây tôi cứ thắc mắc vì sao pin của chiếc MacBook ít dùng lại cứ tụt dần, hóa ra Firefox đang chặn sleep. Có vẻ là do video tự phát. Không hoàn hảo, nhưng là vấn đề có thể sửa được
    • Còn Safari thì lại hiện thông báo bảo hãy đóng nó vì đang tiêu tốn nhiều điện khi xem Netflix
  • Tôi cũng từng gặp hiện tượng tương tự trên MacBook Pro của mình. Đó không phải mẫu Apple Silicon mà là đời trước. Khi đó tôi đã đổi thời gian thuê DHCP trên router xuống 15 phút, thấp hơn rất nhiều so với mặc định. Tôi nghĩ MacBook đã thức dậy mỗi 15 phút để gia hạn IP, cứ ngủ một lúc rồi lại thức. Khi tôi trả thời gian thuê trên router về mức mặc định trước đó thì vấn đề hao pin được giải quyết hoàn toàn. Rất khó đoán ra nguyên nhân đó, nhưng đúng lúc tôi vừa mua MacBook Pro mới nên chú ý đến đủ thứ vấn đề hơn và nhờ vậy tìm ra khá nhanh
    • Một DHCP client hoạt động đúng sẽ gửi yêu cầu gia hạn khi đã qua 50% thời gian thuê. Tức là có khả năng nó còn thức dậy thường xuyên hơn bạn nghĩ
    • Tôi tò mò vì sao bạn lại đổi thời gian thuê DHCP xuống 15 phút. Muốn hỏi là có mục đích gì vậy
    • Tôi cũng vừa mới biết, router mikrotik tôi đang dùng mặc định sử dụng thời gian thuê 10 phút
    • Hiện tượng này thật thú vị. Tôi tò mò mỗi lần thức dậy để gia hạn IP thì tiêu tốn bao nhiêu mAh. Có lẽ chỉ ở mức vài miliampe-mili giây, vì rốt cuộc laptop chỉ bật WiFi trong chốc lát rồi trao đổi vài gói tin. Tất nhiên đây là máy đời trước Apple Silicon, nên trên thực tế có thể trong lúc thức dậy nó còn làm thêm việc khác
    • Tôi nghĩ đây là lỗi của macOS. Khi đang ngủ thì đâu cần IP, nên việc thức dậy chỉ để gia hạn thuê DHCP là bất thường. Hệ điều hành không công khai mã nguồn luôn có những vấn đề như vậy
  • Nếu tùy chọn “Wake for maintenance” bị tắt, Sleep Aid sẽ hiện trong cửa sổ cài đặt rằng điều này có thể khiến máy thức dậy thường xuyên hơn. Tôi tự hỏi liệu tác giả có viết nhầm thành “tùy chọn đã bị tắt” hay không
    • Tôi cũng nghĩ vậy. Đây chỉ là suy đoán, nhưng nếu cài đặt này bị tắt thì có thể các sự kiện đánh thức sẽ không được gom lại theo từng khoảng thời gian để xử lý một lần, mà sẽ xảy ra rải rác suốt đêm. Có vẻ đây chính là điều mà họ đang mô tả
    • Tôi thấy khó hiểu. Bật một tùy chọn vốn là để chủ động đánh thức máy mà lại làm giảm số lần thức dậy sao
    • Tôi cũng bối rối. Trong ảnh chụp màn hình của tác giả thì nó đang ở trạng thái Enable. Trông như đó mới là “bình thường”, nên tôi không trực giác hiểu được vì sao Disabled lại gây ra nhiều lần Wake hơn
    • Kiểu giải thích đi ngược trực giác như thế này cần có giải thích thêm, hoặc ít nhất phải nói rõ rằng đây là ngoại lệ. Khi chỉnh sửa bài sau khi đăng thì rất khó bắt được những vấn đề kiểu này
  • Với mọi laptop Mac tôi từng sở hữu, tôi luôn đặt máy chuyển sang hibernate khi đóng nắp để xử lý vấn đề. Khi mở nắp dùng lại thì phải chờ khoảng 20~30 giây để khôi phục, nhưng tôi xem đó là cái giá nhỏ để bớt phải lo chuyện sleep và hao pin. Có thể dùng lệnh này trong Terminal: sudo pmset -a hibernatemode 25. Để đưa về mặc định, nhập sudo pmset -a hibernatemode 3
    • Tôi thắc mắc không biết chế độ hibernate có hoạt động tốt với FDE (mã hóa toàn bộ ổ đĩa) hay không. Trên Linux có khá nhiều lưu ý liên quan đến mã hóa khi ghi nội dung bộ nhớ ra đĩa
    • Tôi nghĩ đây là cách đơn giản nhất để thiết lập đúng kiểu hành vi mà đa số mọi người mong muốn
  • Tôi đã đào bới vấn đề sleep trên Macbook trong thời gian rất dài, nhưng nguyên nhân là WindowServer và có vẻ cuối cùng sẽ phải cài lại toàn bộ OS. Điều khó chịu không kém việc cứ một hai tháng lại lôi từ túi ra một chiếc laptop nóng ran và cạn pin là phản ứng kiểu "tôi chưa từng gặp, chắc bạn dùng sai gì đó rồi"
  • macOS cho tôi cảm giác gần như ở chế độ bảo trì từ 10 năm nay. Tôi đoán việc chuyển sang ARM/Mac Silicon hẳn là khối lượng công việc khổng lồ. Các bản cập nhật AI cũng gây thất vọng, và gần đây có cảm giác không có nhiều cải tiến thực chất. Trước đây tôi từng dùng Intel Macbook Air có nút nguồn nằm sát phím backspace, và đã tìm được trên diễn đàn Mac một script khiến máy không tắt ngay khi chỉ bấm nút nguồn một lần mà phải giữ. Nhưng script đó lại cài sẵn trojan, khiến tôi phải khôi phục cài đặt gốc cho máy Mac và xóa toàn bộ iCloud. Nghe nói script này có cả GUID trông như biến nội bộ và có thể tải tài nguyên từ đâu đó không rõ. Lúc đó tôi chỉ nghĩ đó là biến nội bộ thôi
  • Tài liệu hỗ trợ chính thức của Apple cho thấy tính năng này (tùy chọn nguồn điện) được cung cấp sẵn
    • Trên M4 MacBook Air cài macOS 26 DB, không còn power nap ở vị trí đó nữa. Thay vào đó xuất hiện "Wake for network access", mặc định là "Only on Power Adapter"
    • Tôi đã nhầm tưởng power nap và "wake for network access" là một. Có vẻ trên macOS 26 không còn tùy chọn đó nữa. Thiết lập của tôi là "Only on Power Adapter", thấy hợp lý. Máy là M4 MacBook Air
  • Tuần trước tôi cũng đã viết gần như một bài blog y hệt. Tiếc là trong trường hợp của tôi giải pháp đó không hiệu quả, vì ngoài power nap còn có tiến trình khác liên tục đánh thức máy. Bài liên quan: bài viết trên annoying.technology
  • Tab Energy trong Activity Monitor rất hữu ích trong những trường hợp thế này. Bạn có thể biết ứng dụng nào đang chặn hoàn toàn system sleep, đồng thời xem mức tiêu thụ điện của từng tiến trình trong 12 giờ qua. Có thể lần ra nguyên nhân ngay trong đêm
  • Tôi cũng đang gặp vấn đề tương tự trên MacBook Pro (Apple Silicon). Nếu để máy ngủ khi vẫn đang cắm SSD, có vẻ hệ thống sẽ định kỳ thức dậy và kích hoạt ổ đĩa. Kết quả là cả laptop lẫn SSD đều nóng lên và pin cạn rất nhanh. Cách đối phó duy nhất là tháo mọi ổ đĩa ngoài trước khi cho ngủ, rồi cắm sạc sẵn. Đây là một lỗi khá phiền phức. Tôi nghĩ chất lượng kiểm soát và kiểm thử đã không đủ tốt