Giữ build chạy bằng pin, không cần cắm sạc

Có, bạn hoàn toàn có thể giữ một build MacBook chạy bằng pin, không cần cắm sạc — cách nhanh nhất là dùng công cụ có sẵn: caffeinate -i chặn chế độ ngủ khi rảnh trong suốt thời gian một lệnh đang chạy, còn pmset -g batt cho bạn biết chính xác mức pin đang có. Điều macOS không tự làm là giảm tiêu thụ điện trong lúc công việc đang chạy, hoặc dừng lại trước khi pin về 0. Đó chính là khoảng trống mà Silent Battery Saver và ngưỡng pin an toàn (battery floor) của LidRun được thiết kế để lấp: giảm độ sáng màn hình để kéo dài thời gian chạy, rồi để Mac tự ngủ theo cách của nó thay vì tắt phựt giữa chừng.
Vấn đề không có ổ cắm
Khi cắm sạc, việc giữ Mac thức để chạy một tác vụ dài chủ yếu là bài toán nhiệt — nhiệt độ, chứ không phải điện, mới là giới hạn. Khi chạy bằng pin, đây còn là một cuộc đua: công việc cần thời gian, còn pin là một ngân sách cố định đang cạn dần suốt thời gian bạn xa ổ cắm.
Cách xử lý thô bạo nhất là tắt hẳn chế độ ngủ và để máy chạy cho tới khi pin hết. Đó là kiểu tệ nhất của cả hai thế giới — màn hình vẫn sáng, đốt phần pin lẽ ra không cần tiêu, và nếu công việc kéo dài hơn thời lượng pin, Mac vẫn sẽ tắt phựt với công việc dang dở.
Cách thực sự hiệu quả là kết hợp hai điều: tiêu ít điện hơn trong lúc công việc chạy, và có một điểm dừng gọn gàng trước khi pin về 0. Các công cụ có sẵn của macOS giúp được một phần. LidRun cố gắng làm cả hai việc này tự động.
Vì sao đồng hồ pin chạy nhanh hơn công việc
CPU — và cả GPU, khi tải model hay render — mới là thứ ngốn điện thật sự trong lúc build, hơn hẳn bất cứ gì màn hình hay hệ điều hành làm lúc rảnh. Một tác vụ chiếm dụng toàn bộ lõi sẽ giữ nguyên mức tải đó suốt thời gian nó chạy, đó là lý do một lần compile nặng hay một phiên agent kéo dài có thể ngốn pin thấy rõ, theo cách mà lướt web hay gõ văn bản không bao giờ làm được.
macOS cũng tự bảo vệ mình trong lúc đó: trạng thái nhiệt của hệ thống leo dần qua các mức nominal, fair, serious, rồi critical khi chip nóng lên, và gần đỉnh thang đo đó, hệ điều hành sẽ ghìm tốc CPU (throttle) để hạ nhiệt. Việc ghìm tốc tự nó không làm tăng mức tiêu thụ điện — nó chỉ làm chip chạy chậm lại — nhưng điều đó đồng nghĩa một build bị ghìm tốc sẽ mất nhiều thời gian hơn để hoàn thành, và mỗi phút kéo dài thêm là một phút pin phải gánh.
Màn hình là khoản chi phí thật khác mà bạn có thể kiểm soát được — một trong những khoản tiêu điện tùy chọn lớn nhất trên laptop, sáng hết cỡ suốt cả phiên dù chẳng ai đang nhìn vào một build không người trông coi. Đây là phần mà một công cụ giữ máy thức thực sự có thể can thiệp; còn tải CPU bên dưới thì nằm ngoài tầm với của nó.
Hướng dẫn liên quanMacBook tự ngủ khi pin yếuCách miễn phí: caffeinate, pmset, và Low Power Mode
macOS đã có sẵn mọi thứ bạn cần để giữ Mac thức, miễn phí. caffeinate -i (hoặc caffeinate -i make, caffeinate -i npm run build) tạo ra một assertion chặn chế độ ngủ khi rảnh trong suốt thời gian lệnh đang chạy, và tự hủy ngay khi lệnh kết thúc — không cần bước dừng riêng. pmset -g batt kiểm tra mức pin và nguồn điện đang dùng ngay trong Terminal, còn pmset -g một mình liệt kê mọi assertion đang giữ Mac thức và tiến trình nào đang sở hữu nó — thực sự hữu ích khi bạn không hiểu vì sao Mac không chịu ngủ.
Cũng có một cách trả lời có sẵn cho phiên bản đóng nắp của vấn đề này: sudo pmset disablesleep 1 giữ MacBook chạy khi gập nắp, dùng cùng màn hình ngoài hoặc chạy nền như một cái máy chủ nhỏ, còn disablesleep 0 tắt nó đi. Đây chính là cơ chế nền mà chế độ clamshell của LidRun cũng dùng bên dưới, chỉ là không có lớp an toàn bọc quanh nó.
Riêng với tình huống ở quán cà phê, Low Power Mode có sẵn của macOS (System Settings → Battery) cắt bớt hoạt động chạy nền và tốc độ xung nhịp để kéo dài thời lượng pin, và đáng để bật lên bất kể thứ gì đang giữ Mac thức — nó không xung đột với vấn đề này, mà bổ trợ cho nó.
Giới hạn của cách làm miễn phí
Những khoảng trống này rất cụ thể, không mơ hồ. caffeinate -s — cờ mà nhiều người dùng đầu tiên — chỉ hoạt động khi cắm sạc; man page ghi rõ điều này, còn khi dùng pin nó âm thầm không làm gì cả, nên một script mặc định -s sẽ bao trọn một phiên rút dây thực ra không hề như vậy. -i mới là thứ thực sự giữ Mac thức khi dùng pin, nhưng nó không nói gì về màn hình, nên một lệnh caffeinate -d -i ngây thơ, hay bất kỳ công tắc giữ-thức nào trên GUI cài đặt tương tự, sẽ để màn hình sáng hết cỡ suốt cả phiên chạy — đốt đúng phần pin chẳng làm được việc gì hữu ích.
Khoảng trống lớn hơn nằm ở điều kiện dừng. caffeinate và các app giữ-thức của bên thứ ba — Amphetamine, KeepingYouAwake, Lungo, Caffeine — đều thực sự làm tốt đúng một việc: một công tắc gọn gàng trên menu bar hoặc một lịch trình giữ máy không ngủ. Không cái nào trong số đó theo dõi mức pin trong lúc giữ máy thức. Bạn phải tự canh phần trăm pin và tắt kịp lúc, hoặc Mac chạy tới 0% rồi tắt phựt giữa chừng — cùng một kết cục với cách làm thô bạo "cứ tắt sleep đi" ở đầu bài.
Đây không phải lời chê những công cụ đó. Một công tắc giữ-thức theo lịch trình chính là thứ hầu hết các phiên làm việc cần, và chúng nhẹ hơn nhiều so với chạy cả một lớp an toàn cho một tác vụ năm phút. Vấn đề chỉ nảy sinh cụ thể ở trường hợp không người trông coi, giới hạn bởi pin, kiểu "tôi sẽ không nhìn vào cái Mac này nữa" — đó là lúc một wake lock mù quáng không còn phù hợp với công việc.
Mua thêm thời gian bằng một màn hình dịu hơn
Silent Battery Saver của LidRun tận dụng chính khoản chi phí màn hình đó: trong lúc giữ Mac thức bằng pin, nó âm thầm giảm độ sáng màn hình — và cả đèn nền bàn phím, trên các model có tính năng này — để kéo dài thời gian chạy, rồi khôi phục cả hai khi phiên kết thúc.
Nó chỉ chỉnh mức sáng một lần, chứ không giằng co với bạn suốt cả phiên: bạn vẫn có thể chỉnh lại độ sáng lên giữa chừng, và LidRun sẽ không tranh giành lại. Và nó chỉ đụng vào độ sáng khi chính nó đang là bên giữ Mac thức bằng pin — khi cắm sạc, hoặc khi không có gì đang chạy, nó đứng ngoài hoàn toàn.
Đây là một đòn bẩy nhỏ, không phải phép màu. Giảm độ sáng màn hình không động gì tới mức CPU tiêu thụ trong lúc compile nặng, nên với một tác vụ chiếm dụng toàn bộ lõi, tính năng này chỉ mua được thêm vài phút, không phải vài giờ. Nhưng với một phiên mà lẽ ra màn hình sẽ sáng hết cỡ suốt cả tiếng đồng hồ chẳng làm gì hữu ích, đó là thời gian chạy thật sự bạn sẽ không có nếu không bật nó lên, và để nó bật thì chẳng tốn gì cả.
Nếu LidRun thoát bất ngờ giữa lúc đang giảm sáng — crash, hay bị force-quit — nó sẽ nhận ra trạng thái còn sót lại ở lần khởi động tiếp theo và tự động khôi phục độ sáng, nên một lần thoát lỗi không khiến bạn mắc kẹt nhìn vào màn hình tối om.
Kết thúc phiên chạy gọn gàng, không phải theo kiểu thảm họa
Nửa còn lại là biết khi nào nên dừng, và LidRun chạy hai lớp thay vì chỉ một ngưỡng cắt duy nhất. Lớp đầu tiên là lớp bạn có thể tùy chỉnh: giữ-thức sẽ tự dừng khi pin xuống dưới một ngưỡng — mặc định 20%, có thể chỉnh trong khoảng 15–50% — để Mac được tự do ngủ bình thường, còn dư đủ thời gian để bạn lưu công việc, tìm ổ cắm, hoặc thu dọn đồ.
Lớp thứ hai là lưới an toàn nằm bên dưới: một cơ chế auto-sleep sinh tồn kích hoạt ở mức mặc định 4% (có thể chỉnh 4–8%), bất kể ngưỡng đầu tiên được đặt ở đâu, hay thậm chí ngay cả khi công tắc auto-stop bị tắt hoàn toàn. Nó tồn tại để một phiên chạy dài kết thúc với việc Mac tự ngủ theo cách của nó, chứ không phải tắt phựt đột ngột, kể cả khi lớp đầu tiên bị cấu hình sai hoặc bị tắt.
Cả hai lần dừng đều không âm thầm. Activity Log ghi lại chính xác thời điểm và phần trăm pin — "Tự dừng ở mức pin 20%", "Đưa Mac vào giấc ngủ ở mức pin 4%", "Đã bật battery saver — giảm độ sáng màn hình" — để sau đó bạn có thể biết chính xác ngưỡng nào đã kết thúc phiên chạy, thay vì phải đoán xem chuyện gì đã xảy ra.
Lớp bảo vệ mặc định chạy miễn phí cho tất cả mọi người; việc tinh chỉnh phần trăm chính xác theo quy trình làm việc của riêng bạn — chẳng hạn đặt ngưỡng dừng 35% cho một laptop bạn hay sạc thường xuyên — là một phần trong các tùy chọn an toàn theo bậc (graduated-safety) trả phí của LidRun. Còn bản thân ngưỡng sàn thì không bao giờ nằm sau paywall.
LidRun phù hợp ở đâu — và không phù hợp ở đâu
caffeinate là công cụ đúng khi bạn đang ngồi trước bàn phím và chỉ cần một lệnh giữ Mac thức trong lúc đi lấy cà phê. Amphetamine, KeepingYouAwake, Lungo, và Caffeine là công cụ đúng khi bạn muốn một công tắc trên menu bar bấm một cái là xong, hoặc một lịch trình, không cần dùng CLI. Tất cả đều giữ máy không ngủ rất tốt. Nhưng không cái nào trong số đó được thiết kế để nhận ra công việc đã thực sự xong, pin đang tiến gần tới điểm dừng đột ngột, hay Mac đang ở một nơi không an toàn để tiếp tục chạy.
Hình dạng của LidRun khác biệt một cách có chủ đích: agent đang chạy thì giữ máy thức; agent xong việc, hoặc tình huống trở nên không an toàn, thì thả giữ và để Mac ngủ. Auto Mode theo dõi một tiến trình thực sự đang bận, chứ không chỉ là một app đang mở — phần copy trong app nói rõ điều này: "chỉ mở app thôi thì không tính" — nên nó không giữ Mac thức dựa trên phỏng đoán. Điều đó, cộng với ngưỡng pin an toàn và tính năng giảm sáng màn hình, mới là thứ một phiên làm việc ở quán cà phê thực sự cần: bớt phải canh chừng, chứ không phải một wake lock mạnh hơn.
Không điều gì trong số này thay đổi bản chất vật lý của một cục pin. Một phiên chạy dài, nặng — tải một model lớn, build release đầy đủ — vẫn hoàn thành nhanh hơn và an toàn hơn khi cắm sạc, còn khi dùng pin nó vẫn tiêu hao nhanh hơn những gì việc giảm sáng hay một ngưỡng đặt đúng chỗ có thể bù lại. Hãy coi chế độ quán cà phê là cách để hoàn thành một tác vụ vừa phải, hoặc tiến được một đoạn thật sự trên một tác vụ dài hơn trước khi tìm được ổ cắm, chứ không phải cách để chạy bất cứ thứ gì vô thời hạn mà không cắm sạc.
Nói thật về việc làm việc bằng pin
Các quy luật vật lý thông thường vẫn áp dụng bất kể công cụ nào đang giữ Mac thức: một mặt bàn cà phê ấm, một chiếc đệm ghế sofa, hay một cái túi đều có thể chặn khe thoát khí mà MacBook cần, và nhiệt tích tụ nhanh hơn nhiều người tưởng. Trạng thái nhiệt của hệ thống leo dần từ nominal lên fair, serious, rồi critical khi điều đó xảy ra, và bộ điều tiết an toàn của LidRun theo dõi đúng quá trình leo thang đó để có thể lùi lại trước khi chip bị buộc phải ghìm tốc mạnh, hoặc Mac bị bỏ chạy ở một nơi không nên chạy.
Không điều gì trong số đó là lý do để tránh làm việc ở quán cà phê. Đó là lý do để đặt Mac trên một mặt phẳng cứng, thoáng khí, kể cả ở một bàn góc, thỉnh thoảng liếc qua mức pin thay vì tin tưởng mù quáng vào bất kỳ công cụ đơn lẻ nào, và để ngưỡng an toàn lo phần mà lẽ ra bạn phải tự nhớ.
Nếu đó là kiểu phiên bạn thường chạy — build không người trông, tác vụ agent, bất cứ thứ gì bạn khởi động rồi bỏ đi — thì battery saver và ngưỡng pin an toàn đã bật mặc định ngay khi giữ-thức chạy bằng pin. Không cần cấu hình thêm gì để lớp bảo vệ cơ bản này có hiệu lực.
LidRun giữ công việc của bạn chạy tiếp khi đóng nắp, với cơ chế bảo vệ pin và nhiệt tích hợp sẵn.
Đã có LidRun? Đọc hướng dẫn thiết lập →
Mới biết đến LidRun? Xem bảng giá →
Câu hỏi thường gặp
Nó giảm độ sáng màn hình, và trên các model có tính năng này, cả đèn nền bàn phím, trong lúc LidRun đang giữ Mac thức bằng pin — điều này kéo dài thời gian chạy trên các tác vụ dài không người trông coi, nơi lẽ ra màn hình sẽ sáng hết cỡ mà chẳng để làm gì. Nó không làm giảm mức CPU tiêu thụ trong lúc compile nặng, nên với một tác vụ chiếm dụng toàn bộ lõi, nó chỉ mua được thêm vài phút, không phải vài giờ. Hãy coi đây là thời gian chạy miễn phí lấy từ khoản chi phí của màn hình, không phải cách khắc phục cho khoản chi phí của CPU.
Không. Nó tự động khôi phục độ sáng màn hình và đèn nền bàn phím khi phiên kết thúc, và chỉ giảm sáng khi chính nó đang là bên giữ Mac thức bằng pin — khi cắm sạc, nó đứng ngoài hoàn toàn. Nếu LidRun thoát bất ngờ giữa lúc đang giảm sáng, nó sẽ phát hiện trạng thái còn sót lại ở lần khởi động tiếp theo và khôi phục độ sáng ngay lúc đó.
Hai ngưỡng. Giữ-thức tự dừng ở mức pin 20% theo mặc định (có thể chỉnh 15–50%), giải phóng cho Mac ngủ bình thường, còn dư thời gian để bạn lưu công việc. Bên dưới đó, một cơ chế auto-sleep sinh tồn kích hoạt ở mức mặc định 4% (có thể chỉnh 4–8%) bất kể ngưỡng đầu tiên được đặt ở đâu, để một phiên chạy được thiết kế kết thúc bằng giấc ngủ, chứ không phải một lần tắt phựt đột ngột.
Bạn có thể tiến được một đoạn thật sự, nhưng một phiên chạy dài, nặng — tải một model lớn, build release đầy đủ — vẫn nhanh hơn và an toàn hơn khi cắm sạc; khi dùng pin, nó tiêu hao nhanh hơn những gì việc giảm sáng hay một ngưỡng có thể bù lại. Hãy dùng chế độ quán cà phê để hoàn thành một tác vụ vừa phải, hoặc gặm dần một tác vụ dài hơn trước khi tìm được ổ cắm, chứ không phải để chạy thứ gì đó vô thời hạn mà không cắm sạc.
caffeinate miễn phí, có sẵn trong macOS, và là lựa chọn đúng khi bạn đang ngồi trước bàn phím và chỉ cần một lệnh để giữ máy chạy. Nhưng caffeinate -s chỉ hoạt động khi cắm sạc — nó âm thầm không làm gì khi dùng pin — còn -i, thứ thực sự hoạt động khi rút dây, thì không giảm độ sáng màn hình hay theo dõi mức pin. Với một công việc bạn bỏ đi trong lúc dùng pin, đó chính là khoảng trống: không có gì có sẵn báo cho Mac biết khi nào nên dừng.
Không — chúng hoạt động ở hai lớp khác nhau. Low Power Mode (System Settings → Battery) cắt bớt hoạt động chạy nền và tốc độ xung nhịp trên toàn hệ thống; còn LidRun quyết định khi nào giữ Mac thức và giảm sáng màn hình trong lúc đó. Chạy song song cả hai hoàn toàn ổn, và với một phiên ở quán cà phê, chính sự kết hợp đó mới kéo dài thời lượng pin được xa nhất.