Trong quá trình sử dụng máy Android, nhất là những bạn nào có root máy và nghịch sâu vào hệ thống, chắc hẳn các bạn cũng đã loáng thoáng thấy qua hai chữ "CPU Governor" và "I/O Scheduler". Mình cũng thế, và trước đây mình chẳng quan tâm nó là gì vì cứ thấy người ta đặt sẵn cho mình thì dùng thôi. Tuy nhiên, trong lần tìm hiểu về các công cụ tinh chỉnh hệ thống bằng ứng dụng ROM Toolbox, mình thấy CPU Governor và I/O Scheduler chiếm hai mục rất lớn nên mới thắc mắc. Thế là mình bắt đầu tìm hiểu thêm và phát hiện ra rằng đây là hai thứ rất thú vị trong Android. Hôm nay mình xin chia sẻ với các bạn về chúng.
1. CPU Governor là gì?
Một "governor" (tạm dịch: kẻ thống trị, thủ lĩnh, người đứng đầu") là một thành phần dùng để kiểm soát CPUFreq, tức xung nhịp CPU. Nhiệm vụ của governor đó là điều khiển CPU tăng hoặc giảm xung nhịp cho phù hợp với nhu cầu của người dùng. Governor rất quan trọng đối với smartphone và tabet bởi nó ảnh hưởng rất lớn đến độ mượt giao diện cũng như thời lượng dùng pin của chiếc máy bạn đang cầm trong tay.
CPU Governor có rất nhiều loại, có loại thì được thiết kế cho vi xử lí hai nhân, có loại chỉ cho một nhân, nhưng cũng có loại dành cho chip lõi tứ nữa. Để chuyển đổi giữa các Governor với nhau, bắt buộc thiết bị của bạn đã phải root rồi, đồng thời bạn phải sở hữu một bản ROM hoặc một phần mềm nào đó có khả năng đổi Governor. Cũng cần lưu ý rằng mỗi một kernel khác nhau (kernel là phần mềm trung gian đứng giữa phần cứng và hệ điều hành) thường đi kèm theo một bộ các governor khác nhau đấy nhé.
Một số phần mềm có thể dùng để đổi CPU Governor:
1. SetCPU.
2. No-frills CPU.
3. Tegrak Overclock.
4. ROM Toolbox
Trong bài viết dưới đây, mình sẽ minh họa bằng phần mềm SetCPU cho nó quen thuộc bởi app này hỗ trợ tinh chỉnh nhiều thứ, có cả CPU governor lẫn ép xung và giao diện rất đơn giản. Ở giao diện chính của app này, bạn sẽ thấy được xung nhịp hiện tại được hiển thị bằng con số to nhất ở giữa, governor hiển thị ở ngay bên dưới nó và dưới nữa là I/O scheduler (cái này chúng ta sẽ tìm hiểu sau). Hai con số màu xanh là bạn có thể tinh chỉnh được, nó cho phép thiết lập xung tối đa và tối thiểu cho thiết bị. Ngó xuống dưới nữa bạn sẽ thấy được mục tùy chọn governor.
Sau đây là chi tiết về một số governor phổ biến:
1. ondemand: Bạn có thể tìm thấy ondemand ở hầu hết các kernel Android và thường là governor mặc định của nhiều kernel. Khi mức độ tải của CPU đạt đến một điểm cực đại (up threshold - bạn có thể chỉnh lại điểm này trong thẻ "Governor" - kéo ngón tay sang phải hai lần), ondemand sẽ nhanh chóng nâng xung nhịp CPU lên cao nhất có thể để đáp ứng được nhu cầu sử dụng máy của chúng ta, sau đó nó sẽ dần dần giảm xung xuống. Khi đặt ondemand, mình nhận thấy rằng trong hầu hết trường hợp, máy đều đẩy xung CPU lên mức cực đại do mình thiết lập. Còn khi tác vụ đã hoàn tất, xung sẽ giảm xuống. Tiếp tục chạy một thứ gì đó khác, CPU lại được đẩy lên cao và chuyện này rất hay xảy ra nếu bạn thường sử dụng nhiều app cùng lúc (đa nhiệm)
ondemand là một trong những governor được các nhà sản xuất chọn bởi vì nó hoạt động ổn định, được kiểm tra kĩ càng và đảm bảo hiệu năng tốt cho smartphone. Mặc dù không tiết kiệm pin như vài governor khác nhưng chuyện đó không ảnh hưởng nhiều lắm. Hãy thưởng tượng việc sử dụng một chiếc máy chậm, giật so với việc bị giảm đi khoảng 2-3 tiếng dùng pin nhưng có độ mượt tốt, bạn chọn cái nào?
Quảng cáo
2. interactive: Governor này cũng có thể dễ dàng tìm thấy trong rất rất nhiều kernel và thường được các nhà sản xuất thiết bị chọn làm mặc định. interactive có chức năng tương tự như ondemand, tuy nhiên nó tập trung nhiều vào việc tăng tốc độ phản ứng của việc thay đổi tốc độ CPU.
Nếu như ondemand tinh chỉnh xung tùy theo từng tác vụ được "xếp hàng" chờ đến lượt mình thì interactive chỉnh xung theo một bộ định thời (timer) với các quãng thời gian nhất định. Bộ định thời này được quyết định bởi lập trình viên viết ra kernel. Nói cách khác, nếu một ứng dụng đòi hỏi 100% tải CPU, người dùng vẫn có đủ thời gian để chạy thêm một tác vụ khác trước khi CPU bắt đầu giảm xung nhịp nếu lập trình viên đặt quãng thời gian đủ dài. Cũng nhờ có bộ định thời mà interactive có thể tận dụng tốt hơn các xung nhịp ở khoảng giữa mức tối đa, tối thiểu. (Ví dụ, max là 1500MHz, min là 300MHz, bạn sẽ thấy máy có chạy ở mức 1000MHz, 800MHz, 700MHz, 600MHz,...)
Mức độ tiêu thụ điện của CPU ở governor interactive. Bạn có thể thấy rằng chúng biến thiên gần như theo chu kì cho một tác vụ nào đó, và chu kì này chính là khoảng thời gian mà người viết ra ROM đã định. Khoảng giữa giảm xuống thấp là vì mình không còn dùng app nào nữa.
Tuy nhiên, bởi vì interactive được phép dành nhiều thời gian ở xung nhịp tối đa hơn là ondemand (để phục vụ việc nâng cao hiệu năng), do đó nó có thể ảnh hưởng tiêu cực đến thời lượng dùng pin. Mặc dù vậy, trong hầu hết các trường hợp, interactive sẽ cho hiệu năng cao hơn, còn sự khác biệt thời gian dùng pin không quá lớn.
Ngoài ra, interactive còn mặc định rằng khi người dùng mở màn hình lên, họ sẽ nhanh chóng tương tác với các ứng dụng trên máy. Do đó, việc mở màn hình sẽ làm xung CPU tăng lên tối đa, sau đó khi bạn chạy app thì xung cũng vẫn còn đang ở mức maximum.
3. conservative: Hiện diện trong một số kernel và nó cũng có cách hoạt động gần giống với ondemand, tuy nhiên tốc độ tăng xung nhịp CPU không nhanh như ondemand, nhờ đó mà nó sẽ đáp ứng nhu cầu tốt hơn. conservative được tạo ra với mục đích giữ cho máy chạy ở xung nhịp tối thiểu thường xuyên nhất có thể. Tùy theo cách lập trình viên thiết lập thông số cho governor này cũng như xung nhịp tối thiểu do người dùng chọn mà máy sẽ có hiệu năng khác nhau. Nhìn chung, conservative khiến thiết bị của chúng ta trở nên kém nhạy hơn là ondemand. Bù lại, bạn sẽ có thời gian dùng pin dài hơn.
4. performance: Có mặt trong hầu hết các kernel. Governor này sẽ giữ cho CPU chạy ở xung nhịp tối đa mọi lúc mọi nơi. So với dùng ondemand và đặt cả xung nhịp tối đa và tối thiểu về cùng một giá trị, performance mang lại hiệu quả cao hơn. Như cái tên của nó đã gợi ý, khi chọn Governor này, máy của chúng ta sẽ hoạt động với hiệu năng cao nhất có thể, phát huy toàn bộ sức mạnh của CPU, tuy nhiên sẽ hao pin hơn.
Quảng cáo
Việc thiết lập cho máy luôn chạy ở xung nhịp mặc định nghe có vẻ điên rồ, nhưng thực chất cũng có lý riêng. Nhờ CPU luôn hoạt động với tốc độ tốt đa nên nó sẽ "chạy về đích" nhanh hơn. Quá trình "chạy về đích" này được cộng đồng phần cứng gọi là race-to-idle. Race-to-idle là quá trình mà điện thoại hoàn tất một công việc được giao (ví dụ như đồng bộ email) rồi trở về trạng thái cực kì tiết kiệm điện của CPU.
5. powersave: Có mặt trong một số kernel. Nó sẽ giữ cho CPU luôn chạy ở tốc độ tối thiểu mà người dùng thiết lập, nhờ vậy thời gian dùng pin sẽ được kéo dài ra, tuy nhiên máy sẽ chậm đi thấy rõ. Ngay cả chiếc Nexus 4 nổi tiếng mượt mà nhưng khi chỉnh governor thành powersave với mức thấp nhất thì bạn sẽ có cảm giác muốn... đập máy.
6. hotplug: Chỉ xuất hiện trong một số ROM hỗ trợ cho vi xử lí đa nhân. Nó giống với ondemand, tuy nhiên nó sẽ tắt các nhân thừa đi khi không cần dùng đến.
7. userspace: Theo lời SetCPU thì Governor này phải được dùng kèm với một phương thức kiểm soát xung nhịp CPU không phải của SetCPU. Nhà phát triển app này khuyên chúng ta không nên chọn userspace governor. Thực chất userspace không phổ biến lắm trên điện thoại, chủ yếu được dùng trên desktop và server để cho phép các ứng dụng chạy bởi người dùng được quyền tinh chỉnh xung nhịp.
8. smartass: Thường thấy trong các bản ROM custom, ROM Cook. smartass governor sẽ giữ máy chạy ở xung nhịp thấp nhất trong trường hợp thiết bị đang ở trạng thái rỗi. Thực chất Governor này sử dụng cùng ý tưởng với Governor interactive, tuy nhiên hiệu năng được đáng giá là ngang với Governor min max, còn pin thì cũng được nâng lên một chút vì hầu hết thời gian của smartass là chạy ở mức xung nhịp thấp.
Ngoài ra, smartass chỉnh xung nhịp tối đa ở chế độ ngủ về 352MHz. Ngay cả khi phần min frequency bạn đặt cao hơn thì nó vẫn kéo về 352MHz. Do đó, bạn sẽ không cần đến profile sleep nữa.
9. min max: Tùy theo mức độ tải của CPU mà máy sẽ chạy hoặc ở xung nhịp cao nhất, hoặc ở xung nhịp thấp nhất, không có xung nhịp nào ở giữa.
10. scary: một Governor mới được viết dựa trên conservative nhưng lại có một số tính năng của smartass. Nó sẽ bắt đầu ở tốc độ thấp nhất, lấy mẫu thử và nếu mẫu này cần tốc độ cao hơn upthreshold, scary sẽ tăng xung nhịp nhịp lên mỗi lần một mức (lúc giảm cũng vậy). Tốc độ tối khi tắt màn hình là 245MHz và hầu hết thời gian, scary sẽ chạy ở xung nhịp thấp. Mục tiêu của scary, nói tóm lại, là để đạt thời lượng dùng pin tốt với hiệu năng trung bình.