Kiểm soát quạt Mac cho developer

Henry AGI
6 phút đọcJun 2026
Kiểm soát quạt Mac cho developer

Trả lời ngắn gọn: trên một chiếc Mac đời mới, bạn không thể tự đặt đường cong quạt (fan curve) theo ý mình — firmware của Apple nắm toàn quyền quyết định tốc độ quạt (RPM), và trên Apple Silicon, ngay cả những cách lách luật mà các công cụ đời cũ từng dùng cũng bị daemon quản lý nhiệt của macOS thu hồi lại chỉ trong vài giây. Thứ bạn thực sự kiểm soát được là khả năng quan sát và thời điểm hành động: thấy nhiệt độ tăng lên, rồi tự xử lý (hoặc để thứ gì đó xử lý giúp bạn) trước khi một lần build dài, một chồng container, hay một model chạy local bị giảm xung (throttle) hoặc buộc Mac phải tự bảo vệ chính nó. Bài viết này nói về việc kiểm soát quạt trên Mac thực sự có nghĩa là gì ngày nay, so sánh giữa Intel và Apple Silicon, các lệnh có sẵn miễn phí cho bạn biết chuyện gì đang diễn ra ngay lúc này, giới hạn của cách làm tự chế (DIY), và workflow nhận biết nhiệt độ mà LidRun dùng thay thế.

Vì sao khối lượng công việc của developer làm máy nóng

Biên dịch (compile) một dự án lớn, chạy cả chồng container Docker, hay phục vụ một model chạy local, đều khiến CPU — và trên Apple Silicon, thường cả GPU lẫn Neural Engine — bị ghim gần mức trần trong nhiều phút, thậm chí nhiều giờ, chứ không phải chỉ vài giây. Chính mức tải kéo dài liên tục đó, chứ không phải một đợt tăng đột biến ngắn, mới là thứ thực sự đẩy nhiệt độ chip lên cao.

Khi SoC nóng đến một ngưỡng nhất định, macOS sẽ giảm xung (throttle) để tự bảo vệ: xung nhịp tụt xuống, và lần build vốn đang chạy vun vút mười phút trước bỗng chậm hẳn lại giữa chừng. Bạn có thể tự quan sát điều này, miễn phí, ngay trong Terminal: chạy pmset -g therm rồi nhìn vào dòng CPU_Speed_Limit. Ở mức 100 nghĩa là máy đang chạy hết công suất; bất cứ số nào thấp hơn nghĩa là máy đang bị throttle ngay lúc đó, thời gian thực, không cần cài thêm app của bên thứ ba nào.

Phản xạ tự nhiên lúc đó là muốn vặn quạt lên hết cỡ để máy chạy tiếp. Nhưng trên một chiếc Mac đời mới, phản xạ đó va thẳng vào việc phần cứng bị khóa chặt đến mức nào — đây chính là phần mà phần lớn các lời khuyên về kiểm soát quạt thường lướt qua, không nói thẳng.

macOS thực sự cho bạn kiểm soát điều gì (và không cho điều gì)

Có hai thứ hoàn toàn khác nhau đều bị gọi chung là "kiểm soát quạt", và việc gộp chung chúng lại chính là nguồn gốc của phần lớn sự nhầm lẫn. Đọc thông số quạt — RPM hiện tại, khoảng min/max, nhiệt độ chip — được phép trên mọi Mac, dù là Intel hay Apple Silicon. Còn việc ghi một target RPM mới, tức là thực sự ra lệnh cho quạt quay nhanh hơn mức firmware muốn, lại là một thao tác phần cứng có đặc quyền, và trên Apple Silicon thì gần như không app nào làm được điều này, bất kể được viết khéo đến đâu.

LidRun
Table showing Mac fan control capability by hardware generation: reading temperature and fan RPM works on every Mac, but only pre-T2 Intel Macs reliably accept a forced fan-RPM write; T2 Macs accept the mode switch but reject the target write; Apple Silicon rejects the write outright.
Trên mỗi thế hệ phần cứng Mac, cái gì bạn đọc được và cái gì bạn ghi (điều khiển) được.

Về bản chất kỹ thuật, điều khiển quạt trên Intel là một thao tác ghi SMC (System Management Controller) gồm hai bước: bật một mode key sang "manual", rồi ghi target RPM. Các Mac Intel đời trước T2 thường chấp nhận thao tác ghi này ngay lập tức. Mac dùng chip T2 (dòng MacBook Pro/Air khoảng 2018–2020, iMac Pro, Mac Pro) lại là một cái bẫy riêng: chúng chấp nhận việc chuyển sang manual mode, nhưng lại âm thầm từ chối thao tác ghi target RPM thực sự — nên một công cụ chỉ kiểm tra bước đầu tiên sẽ báo "đã bật kiểm soát quạt" trên phần cứng thực chất chưa bao giờ quay khác đi. Trên Apple Silicon, quạt nằm trong "system mode" do chính firmware quản lý, và một thao tác ghi trực tiếp sang manual mode sẽ bị từ chối thẳng thừng. Một số công cụ lách qua bằng một khóa mở (unlock key) không được công bố chính thức, nhưng ngay cả khi đó, daemon thermalmonitord của macOS vẫn thu hồi quyền kiểm soát về lại đường cong của firmware chỉ trong vài giây, trừ khi khóa mở đó được giữ liên tục — một đường đi mong manh, không được hỗ trợ chính thức, mà Apple có thể đóng lại bất cứ lúc nào qua một bản cập nhật hệ điều hành, chứ không phải một API thực sự.

Điều này đáng nói thẳng ra, vì rất nhiều nội dung quảng cáo về kiểm soát quạt lại không làm vậy: bất kỳ công cụ nào hứa hẹn kiểm soát quạt thủ công đầy đủ, đáng tin cậy trên một chiếc Mac dòng M đều đang nói quá những gì nền tảng này thực sự cho phép ở thời điểm hiện tại. LidRun không hứa hẹn kiểm soát RPM quạt trên Apple Silicon, và sẽ là không trung thực nếu ngụ ý điều ngược lại — cơ chế dò khả năng (capability probe) của LidRun không bao giờ mặc định một thao tác ghi đã thành công, và trên phần cứng từ M1 đến M4/M5, kết quả trả về phần lớn là chỉ theo dõi được (monitor-only), không hơn.

Hướng dẫn liên quanLựa chọn thay thế Macs Fan Control cho lập trình viên

Cách miễn phí, có sẵn để kiểm tra chuyện gì đang diễn ra

Trước khi tìm đến bất kỳ app nào, đáng biết rằng macOS đã sẵn có hai cách miễn phí để xem tình trạng nhiệt thực tế, không cần cài thêm gì cả. Lệnh pmset -g therm trong Terminal in ra CPU_Speed_LimitCPU_Scheduler_Limit — khi một trong hai giá trị này tụt xuống dưới 100, tức là máy đang bị throttle. Lệnh này chạy giống hệt nhau trên cả Intel lẫn Apple Silicon và không cần quyền đặc biệt gì.

LidRun
Terminal output of the pmset -g therm command showing CPU_Speed_Limit at 100 (normal) versus dropped below 100 (throttled).
pmset -g therm miễn phí, có sẵn trong macOS, và báo cho bạn biết ngay khi máy bị throttle — không cần cài app nào.

Lệnh sudo powermetrics --samplers smc -i1000 -n1 đi sâu hơn một bậc, in ra nhiệt độ die CPU thực tế, và trên hầu hết Mac Intel là cả RPM quạt theo thời gian thực. Lệnh này cần sudo vì nó đọc dữ liệu cảm biến thô. Trên Apple Silicon, phần RPM quạt trong kết quả trả về không nhất quán giữa các bản macOS; phần đọc nhiệt độ mới là phần đáng tin cậy ổn định trên nền tảng này.

Thứ mà macOS không có sẵn là một giao diện đồ họa (GUI) cho việc này — Activity Monitor chỉ hiện phần trăm CPU và điểm Energy, chưa bao giờ hiện nhiệt độ hay tốc độ quạt, và đó chính xác là khoảng trống mà các công cụ menu-bar của bên thứ ba tồn tại để lấp vào. Các lựa chọn miễn phí như Stats (một trình theo dõi menu-bar mã nguồn mở khá phổ biến) đọc nhiệt độ và RPM quạt mà không ghi gì cả; Macs Fan Control đọc cảm biến miễn phí trên mọi Mac và bổ sung thêm các preset RPM cùng khả năng điều khiển thủ công trên phần cứng Intel đời cũ vẫn còn chấp nhận thao tác ghi. Cả hai đều không thay đổi được giới hạn trên Apple Silicon đã nói ở trên — chúng chỉ đang đọc cùng một cánh cửa bị khóa, chỉ là qua một ô cửa sổ nhìn rõ hơn.

Giới hạn của cách làm tự chế (DIY)

Ngồi canh một cửa sổ Terminal hay một chỉ số trên menu-bar thì ổn với một lần build năm phút mà bạn ngồi trước máy theo dõi. Nhưng cách này hết tác dụng ngay khi tiến trình chạy lâu hoặc không có ai canh — một lần build Xcode kéo dài, một buổi fine-tune model qua đêm, một chồng Docker Compose bạn khởi chạy rồi bỏ đi làm việc khác. Chẳng ai thực sự ngồi chạy lại pmset -g therm mỗi ba mươi giây suốt cả tiếng đồng hồ.

Trên những Mac Intel mà thao tác ghi RPM thực sự có tác dụng, việc tự ép quạt chạy theo ý mình mang theo một rủi ro nhỏ nhưng có thật: nếu tiến trình thực hiện thao tác ghi bị crash hoặc bị kill mà không trả quạt về chế độ "auto", quạt có thể bị ghim ở một tốc độ cố định — ồn khó chịu lúc máy đang rảnh, hoặc bị kẹt ở mức thấp nếu nó chết giữa chừng lúc quạt đang tăng tốc trong khi máy vẫn đang làm việc. Đây là một kiểu lỗi đã biết của các thao tác ghi SMC tự chế, không phải chuyện giả định, và đó là lý do bất kỳ công cụ nào làm việc này cũng nên luôn trả quạt về đường cong tự động của firmware khi thoát hoặc khi crash, chứ không chỉ khi tắt sạch sẽ.

Riêng trên Mac Intel dùng chip T2, cái bẫy lại xảy ra theo chiều ngược lại: một công cụ có thể báo "đã bật kiểm soát quạt" vì thao tác ghi mode thành công, trong khi thao tác ghi RPM thực sự lại âm thầm bị từ chối bên dưới — nên bạn tưởng mình đang kiểm soát được nhưng thực ra không. Để lấp khoảng trống này, cần xác nhận thao tác ghi target RPM thực sự có hiệu lực trước khi gọi một chiếc Mac là "kiểm soát được", chứ không chỉ kiểm tra xem việc chuyển mode có báo lỗi hay không.

Một workflow nhận biết nhiệt độ, thay vì chạy theo RPM

Nếu bạn không thể ra lệnh cho quạt một cách đáng tin cậy — và với phần lớn số Mac đang được dùng hiện nay, bạn thực sự không thể — thì mục tiêu thực tế sẽ chuyển từ "kiểm soát" sang "nhận biết cộng với thời điểm hành động": biết khi nào một tiến trình đang nóng lên, và hành động trước khi nó bị throttle hoặc Mac phải tự bảo vệ chính nó.

LidRun
Chart showing LidRun's proportional fan ramp curve from quiet below 62°C to full push at 90°C, with a separate safety threshold marked near 98-100°C where LidRun's safety governor can end a session regardless of fan state.
Hai ngưỡng khác nhau, hai vai trò khác nhau: đường fan ramp là để êm tai, còn mốc 98-100°C của safety governor mới là thứ thực sự quyết định session có được tiếp tục hay không.

LidRun đọc nhiệt độ và trạng thái quạt liên tục rồi hiện lên menu bar, để một lần build đang nóng lên là thứ bạn nhìn thấy được, chứ không phải một bất ngờ. Trên những Mac mà thao tác ghi RPM quạt đã được xác nhận là có hiệu lực — chủ yếu là phần cứng Intel đời cũ và T2 — LidRun tăng quạt theo một đường cong tỉ lệ: êm dưới khoảng 62°C (56°C khi đã gập nắp máy và nhiệt có ít lối thoát hơn), tăng dần khi chip nóng lên, và đẩy gần hết công suất khi nhiệt độ vượt khoảng 90°C hoặc khi giới hạn tốc độ CPU tụt xuống 60% hoặc thấp hơn, dựa trên lập luận rằng ở mức đó một lần build bị đứng còn quan trọng hơn một chiếc quạt chạy êm. Các preset Quiet, Balanced, AI Workload và Emergency Max nằm trên nền đường cong đó, cho những lúc bạn muốn tự điều chỉnh thiên hướng bằng tay.

Việc tăng quạt này cố tình không được trình bày như một cơ chế an toàn — quạt chỉ là một công cụ hỗ trợ cho sự thoải mái và giúp máy phục hồi sau throttle, chứ không phải thứ giữ cho Mac khỏi quá nhiệt. Một lớp kiểm tra riêng, độc lập, dựa trên nhiệt độ SMC cộng với tín hiệu áp lực nhiệt (thermal-pressure) riêng của macOS, coi nhiệt độ duy trì quanh mức 98–100°C, hoặc giới hạn tốc độ CPU tụt xuống dưới khoảng 30–50%, là đủ nghiêm trọng để hành động, bất kể quạt lúc đó đang làm gì. Và nếu một thao tác ghi quạt lỡ bị bỏ dở giữa chừng — do crash, do tiến trình bị kill — cơ chế lease 90 giây sẽ tự động trả quạt về đường cong gốc của firmware, thay vì để nó bị kẹt lại.

LidRun phù hợp ở đâu — và thành thật là không phù hợp ở đâu

Trên Apple Silicon, LidRun không điều khiển quạt của bạn. Thay vào đó, nó theo dõi trạng thái nhiệt — nhiệt độ SMC ở những nơi đọc được, mức throttle CPU, và tín hiệu thermal-pressure riêng của macOS — rồi lùi lại thay vì cố ép: một cài đặt tên "Don't hold when the Mac is hot" (mặc định bật) sẽ không cho một lần chạy được theo dõi mới bắt đầu khi máy đang nóng sẵn, và nếu bạn đang dùng Closed-Lid mode, một cài đặt thứ hai, "Drop Closed-Lid if the Mac gets too hot" (cũng mặc định bật), sẽ kết thúc chế độ ghi đè đó khi nhiệt độ chạm mức thực sự nguy hiểm, để máy có thể throttle và ngủ đúng như cách nó được thiết kế để làm, thay vì tiếp tục chạy nóng mà không ai để ý dưới nắp máy đã gập.

LidRun
LidRun menu bar showing live Mac temperature, fan speed, and keep-awake session status together.
Nhiệt độ, trạng thái quạt, và session keep-awake của bạn — tất cả trong một cái nhìn, cập nhật liên tục chứ không phải chỉ khi bạn nhớ ra để kiểm tra.

Trên các Mac Intel và T2 mà thao tác ghi quạt được xác nhận là có tác dụng, cùng một dữ liệu nhiệt đó cũng dùng để điều khiển đường cong tăng quạt tỉ lệ đã mô tả ở trên — một bức tranh nhiệt độ, hai đòn bẩy khác nhau, tùy vào việc phần cứng thực sự cho phép điều gì.

Lời hứa nằm bên dưới cả hai hướng đi này là như nhau: agent đang chạy thì máy thức; agent xong việc hoặc máy không còn an toàn thì buông ra và để máy ngủ. Đó là một tiêu chuẩn khác hẳn so với chỉ đơn thuần đọc thông số làm mát — mục tiêu không phải là một chiếc quạt chạy êm hơn, mà là không để mất một lần build hay một lần chạy agent không ai canh chỉ vì nhiệt độ tăng lên mà bạn không thấy trước, mà không giả vờ rằng LidRun có thể ép một chiếc quạt vốn không chịu nhúc nhích. Nếu bạn hay chạy các lần build dài, các container, hay các model local mà không ngồi canh, việc thử LidRun trên chính máy của mình để xem Mac thực sự đang làm gì lúc bạn không để ý là điều đáng làm.

Thử nó thay vì vật lộn với ngủ khi gập máy

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.

Tải cho macOS

Đã 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

LidRun có thể điều khiển trực tiếp quạt trên Mac của tôi không?

Trên các Mac Intel và T2 mà thao tác ghi RPM quạt được xác nhận là có tác dụng, thì có — LidRun sẽ tăng quạt theo một đường cong tỉ lệ và cung cấp các preset Quiet, Balanced, AI Workload, và Emergency Max. Trên Apple Silicon thì không: LidRun không hứa hẹn kiểm soát RPM quạt ở đó. Thay vào đó, nó liên tục đọc nhiệt độ và trạng thái throttle, rồi dùng dữ liệu đó để quyết định phiên keep-awake của bạn.

Vì sao các app không thể đặt đường cong quạt tùy chỉnh trên Apple Silicon?

Apple Silicon giữ quạt dưới "system mode" do chính firmware quản lý. Một thao tác ghi trực tiếp để ép sang chế độ thủ công sẽ bị từ chối thẳng thừng, và ngay cả khóa mở không được công bố chính thức mà một số công cụ dùng cũng bị daemon quản lý nhiệt của macOS thu hồi lại chỉ trong vài giây, trừ khi khóa đó được giữ liên tục — một đường đi mong manh, không được hỗ trợ chính thức, chứ không phải một API thực sự. Việc đọc nhiệt độ và RPM quạt thì vẫn hoạt động bình thường ở mọi nơi; chỉ có việc ghi một target RPM mới là bị chặn.

Có cách nào miễn phí để kiểm tra nhiệt độ hay trạng thái throttle của Mac mà không cần cài thêm gì không?

Có. Chạy pmset -g therm trong Terminal — nếu CPU_Speed_Limit hiện dưới 100, nghĩa là máy đang bị throttle ngay lúc đó. Lệnh sudo powermetrics --samplers smc -i1000 -n1 đi xa hơn, in ra nhiệt độ die CPU thực tế, cộng với RPM quạt trên hầu hết Mac Intel. Cả hai đều có sẵn trong macOS; không lệnh nào cần đến app của bên thứ ba.

Cơ chế theo dõi nhiệt của LidRun giúp gì trong một lần build dài hay một lần chạy agent?

Nó liên tục đọc nhiệt độ và mức throttle rồi hiện lên menu bar, để một lần chạy đang nóng lên là thứ bạn nhìn thấy được, chứ không phải một bất ngờ. "Don't hold when the Mac is hot" (mặc định bật) chặn một lần chạy được theo dõi mới bắt đầu khi máy đang nóng sẵn, và nếu nhiệt độ vượt ngưỡng nguy hiểm, LidRun có thể hủy chế độ ghi đè Closed-Lid để máy được ngủ thay vì bị đẩy nóng thêm.

Điều này có áp dụng cho cả Apple Silicon lẫn Mac Intel không?

LidRun hỗ trợ macOS 13 Ventura trở lên trên cả hai loại. Việc theo dõi nhiệt — đọc nhiệt độ và mức throttle — hoạt động giống nhau trên cả hai. Kiểm soát RPM quạt chỉ giới hạn ở các Mac Intel và T2 xác nhận được thao tác ghi có tác dụng; Apple Silicon vẫn chỉ dừng ở mức theo dõi (monitor-only).

Bạn đang tò mò LidRun có hợp với mình không?

Cứ để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm vào bên dưới xem AI thực sự nghĩ gì về LidRun.