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?
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.
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.
Không có nhận xét nào:
Đăng nhận xét