Chia Sẻ Tất Cả Về CPU Governor - IO/Scheduler

Thảo luận trong 'Kinh nghiệm & Hỏi đáp Android' bắt đầu bởi SmartAnd, 12/04/2014.

  1. Offline

    SmartAnd I'm Người Xuất Gia

    Số bài viết:
    2.152
    Đã được thích:
    2.498
    Với những vọc sỹ Android thì không ai không từng sử dụng ROM cook, và khi sử dụng ROM cook thì việc tịnh chỉnh để máy chạy mượt hoặc giảm hao pin thì việc thiết đặt Governor - IO/Scheduler là điều ai cũng cần. Tuy nhiên để có một thiết đặt tốt thì các vọc sỹ phải hiểu về các Governor - IO/Scheduler. Vì lẻ đó hôm nay Smart xin lý giải về những vấn đề nói trên để các bạn hiểu thêm.

    I - CPU Governor
    Trước khi nói về chi tiết, mình có lời khuyên các bạn nên theo dõi thật chi tiết những Governor nào mình quan tâm hoặc hay sử dụng và chú ý Ondemand vì nó hay được đem ra so sánh giống như một Governor chuẩn của các nhà SX. Ngôn ngữ sử dụng thuộc về chuyên môn nên có đôi khi hơi khó hiểu. Thắc mắc điều gì mình sẽ cố gắng giải đáp tại đây.
    1) Ondemand:
    Là Governor mặc định của hầu hết các Kernel chính hãng. Governor này làm việc với nhiệm vụ sử dụng CPU ở mức tối đa ngay sau khi phát hiện có một hoạt động cần được xử lí để đảm bảo sự trơn tru cho hệ thống.
    Và thực tế nó sử dụng CPU giống cái cách mà ta trả lời cho câu hỏi "làm thế nào khi có một hoạt động quan trọng cần thực hiện ngay bây giờ ?".
    Do vậy, OnDemand nhảy tần số tối đa khi CPU làm việc và giảm tần số dần dần khi CPU ít tải hoặc nhàn rỗi. Nhiều người trong số chúng ta coi OnDermand như một Governor tin cậy, nó thiên về tiết kiệm pin và hiệu suất trên các thiết lập mặc định.
    Tuy nhiên OnDermand không phải lúc nào cũng sử dụng tần số CPU cao nhất cho việc liên tiếp xử lí các hoạt động, tùy vào yêu cầu và trong khoảng thời gian nhất định nó thường xuyên nhảy giữa các tần số từ cao nhất đến thấp nhất.
    Khi ở chế độ nghỉ (screenoff), tần số CPU luôn ở mức tối thiểu là bằng với giá trị thấp nhất mà người dùng đã cài đặt (cao hơn hoặc bằng Min), để sẵn sàng xử lí các hoạt động tiếp theo.
    2) Ondemandx:
    Về cơ bản thì Ondemandx là Governor hoạt động giống với Ondemand nhưng ở mức thân thiện hơn. Đây cũng chính là Governor mình hay sử dụng. Ondemandx cũng là một Governor an toàn, nó phụ thuộc vào khả năng của CPU để chuyển đổi nhanh các tần số, độ trễ của quá trình chuyển đổi tần số rất thấp.
    Khi ở chế độ nghỉ (screenoff) tần số CPU khi cao nhất đạt mức 500mhz, vừa đủ để đảm bảo các hoạt động như đồng bộ, báo thức…
    Ondemandx kết hợp với SIO ở I/O Scheduler sẽ đạt hiệu quả tốt nhất !
    3) Conservative:
    Là Governor cũng dựa trên Ondemand nhưng việc chuyển đổi (tăng hoặc giảm) tần số CPU ở mức từ từ (chậm hơn) để tiết kiệm pin. Nó tự động điều chỉnh tần số trên cơ sở mà chúng ta sử dụng ứng dụng hoặc hoạt động.
    Governor này làm tăng bước tần số bước trên tải CPU (không nhảy 1 phát từ A-Z mà nhảy từ từ A-B-C…) và ở mức tần số thấp nhất trên CPU khi nhàn rỗi, nhằm mục đích để tự động điều chỉnh tần số CPU sử dụng hiện tại, mà không nhảy đến tần số tối đa.
    4) Interactive:
    Có thể coi Governor này là một Ondemand thông minh hơn hơn, vì thế nó xử lí các hoạt động trơn tru hơn nhưng lại hao pin hơn. Interactive được thiết kế với độ trễ nhạy cảm và xử lí khối lượng công việc kiểu tương tác.
    Thay vì ra quyết định xử lí bằng tần số tối đa ngay như Ondemand thì Interactive quyết định làm thế nào để mở rộng quy mô khi CPU phải sử lí các hoạt động.
    Ưu điểm của Interactive:
    -Tất cả đều nằm trong tính toán phù hợp hơn, bởi vì các Governor khác sử dụng CPU trong một bối cảnh hoạt động nào đó, nhưng đối với Interactive thực hiện điều này trong một bối cảnh hẹn giờ, trong đó cách nó sử dụng CPU cũng nhất quán hơn.
    -Interactive ưu tiên cao hơn cho sự gia tăng tần số CPU, phần còn lại chia theo từng mức độ sử dụng của các hoạt động. Có thể coi đây là một OnDemand thông minh bởi vì nó tối ưu hóa sự ổn định.
    5) Interactivex:
    Đây là một Governor cải tiến hơn của Interactive với mức Pin thân thiện hơn.
    6) Lulzactive:
    Là Governor thường được tìm thấy ở các thiết bị sử dụng chip Tegra được dựa trên cơ sở của Interactive & Smartassvà cũng là một trong các Governor được yêu thích.
    Khi khối lượng công việc lớn hơn hoặc bằng 60%, khả năng đẩy tần số CPU lên mức cao hơn được thực thi. Khi khối lượng công việc ít hơn 60%, tần số CPU giảm dần đều đi 1 mức.
    Khi màn hình tắt, tần số CPU bị khóa và luôn ở mức thấp nhất.
    7) Lulzactiveq:
    Là Governor thường thấy ở các thiết bị như S2 hay S3 của tác giả Robertobsc (thành viên diễn đàn XDA) được dựa trên Lulzactive để tối ưu hóa cho các thiết bị sử dụng ROM hoặc Kernel của tác giả.
    8) Smartass:
    Là Governor thiên về thời lượng pin hơn là hiệu suất xử lí công việc. Tuy nhiên tần số CPU tối thiểu khi màn hình sáng bao giờ cũng lớn hơn là khi màn hình tắt, rất ít khi được cân bằng.
    9) SmartassV2:
    Là Governor cân bằng giữa hiệu suất và thời lượng pin. Nó sử dụng các tần số khác nhau nhưng lý tưởng cho màn hình khi bật và tắt.
    10) Intellidemand:
    Cũng là một Governor dựa trên Ondemand. Ban đầu, nó xử lí khác nhau theo cách sử dụng GPU. Khi GPU thực sự bận rộn (chơi game, bản đồ, benchmark, vv) Intellidemand sử dụng như Ondemand. Khi GPU ở mức độ vừa phải , Intellidemand hạn chế tối đa tần số để một bước phụ thuộc vào tần số có sẵn trong điện thoại / kernel để tiết kiệm pin.

    Tóm lại, đây là một Ondemand thông minh để hạn chế tối đa tần số GPU chạy khi không thực sự bận rộn, và (ra khỏi chế độ duyệt) hoạt động như ondemand khi GPU là bận rộn, để cung cấp hiệu suất cho chơi game .
    Intellidemand không nhảy tần số cao nhất khi màn hình tắt.
    11) Lazy:
    Là Governor của tác giả Ezekeel về cơ bản là một Ondemand với một tham số bổ sung để xác định thời gian tối thiểu CPU ở trên một tần số trước khi mở rộng quy mô lên / xuống. Ý tưởng ở đây là để loại bỏ bất kỳ sự bất ổn gây ra bằng cách chuyển mạch tần số nhanh bởi Ondemand. Các thử nghiệm trên Governor Lazy thường xuyên hơn Ondemand, nhưng tần số thay đổi chỉ sau khi hoàn thành trên khoảng một bước lấy mẫu quan trọng. Lazy cũng có một tham số mà khi được kích hoạt sẽ gây ra việc chọn tần số tối đa trong khi màn hình tắt.
    12) Lagfree:
    Lagfree tương tự Ondemand. Sự khác biệt chỉ là nó tối ưu hóa để trở thành pin thân thiện hơn. Tần số được giảm và tăng lên một cách điều hòa, không giống như Ondemand nhảy đến 100% một cách thường xuyên. Lagfree không bỏ qua bất kỳ bước tần số nào trong khi mở rộng quy mô lên hoặc xuống.

    Hãy nhớ rằng nếu có một yêu cầu nào đó đột ngột đòi hỏi cần phải xử lí ở tốc đố cao thì Lagfree không thể đáp ứng vì nó tăng tần suất CPU thông qua từng nấc.
    Một số người báo rằng họ bị phát lại khi xem video hoặc bị giật nhẹ.
    13) Lionheart:
    Lionheart là một Governor được chỉnh theo thói quen sử dụng dựa trên nguồn UPDATE3 samsung. Tweaks đi kèm từ 1) Knzo 2) Morfic.
    14) LionheartX:
    LionheartX được dựa trên Lionheart nhưng có một số thay đổi dựa trên Governor Smartass.
    15) Brazilianwax:
    Tương tự như smartassV2. Tích cực hơn việc nhảy vọt tần số CPU, thiên về hiệu suất và hao pin hơn.
    16) SavagedZen:
    Một Governor dựa trên smartassV2. Đạt được sự cân bằng giữa hiệu suất và pin so với Brazilianwax.
    17) Userspace:
    Thay vì tự động xác định tần số CPU, nó cho phép người dùng tự cài đặt
    18) Powersave:
    Khóa tối đa tần số với tần số min. Xử lí hoạt động chậm chạm nhưng tiết kiệm pin gần như tối đa . Màn hình có thể tắt nếu tần số CPU là quá thấp (min quá thấp)
    19) Performance:
    Luôn cố gắng xử lí công việc ở tần số CPU cao nhất có thể, việc này là vô cùng hao pin và sinh nhiệt. Hạn chế sử dụng nó nếu không thực sự cần thiết.
    II - IO/Scheduler
    Giống như Governor thì Scheduler cũng là một phần quan trọng của Kernel (hạt nhân của hệ điều hành), cùng với CPU Frequency và Governor nó cũng tham gia vào quá trình xử lí hoạt động của hệ thống nhưng bằng cách sắp xếp lịch trình đóng/mở các ứng dụng đang chạy.

    Để nói rõ vấn đề này hơn ta sẽ bàn về "hệ điều hành đa nhiệm" là gì? và "hệ điều hành đa nhiệm" hoạt động như thế nào?
    Hệ điều hành đa nhiệm là hệ điều hành mà trong đó theo lý thuyết nhiều chương trình, nhiều ứng dụng chạy song song nhau. Nói thì nói như vậy, nhưng nếu bạn đã có học qua 1 khóa sơ cấp về máy tính và có lẽ chúng ta đã quên vì thời ấy học chơi thôi chứ không quan trọng nên không ai thèm nhớ. Là tuy gọi là đa nhiệm, nhưng thực tế các cpu của hệ điều hành đa nhiệm sẽ tắt mở liên tục giữa các ứng dụng đang chạy.
    Nói vd về hệ điều hành Windows, ta vừa lướt web, vừa nghe nhạc, vừa chơi game. Thật sự là các chương trình đó không hề chạy song song nhau như chúng ta nghĩ. Mà Cpu sẽ bật chương trình này lên trong khi tắt các chương trình còn lại, rồi lại bật chương trình khác và tắt các cái còn lại. Vấn đề là việc này diễn ra quá nhanh và ta không thể quan sát và cảm nhận được thôi.

    Scheduler, hiểu nôm na về công dụng của nó chính là "ưu tiên". "Ưu tiên" mở app nào? và đóng app nào? trong lúc đang chạy đa nhiệm nhiều ứng dụng 1 lúc, app nào sẽ được ưu tiên chăm sóc kĩ hơn - mướt hơn trong quá trình chạy ứng dụng ? I/O scheduler giúp bạn nâng cao hiệu năng sử dụng chiếc android của mình, các app hay game ngày xưa bạn cảm thấy giật lag, thì với tùy chỉnh chính xác bạn sẽ cảm thấy sự cải thiện rõ ràng trong khi sử dụng.
    1) Noop:
    Xử lí các hoạt động theo thứ tự trước tiên, ứng dụng nào được kích hoạt trước thì xử lí trước, kích hoạt sau thì xử lí sau.
    Ưu điểm là tuổi thọ pin thân thiện hơn
    Nhược điểm là hiệu suất giảm
    2) Deadline:
    Deadline sẽ đưa ra danh sách các app nào được ưu tiên theo ý nó, và bớt chăm sóc các app không được ưu tiên đi.
    Ưu điểm: là một trong những Scheduler tốt nhất cho CPU vì được tính toán sao cho tương thích với hệ thống.
    Nhược điểm: Khi hệ thống quá tải, các Process có thể bất ngờ bị đóng mà không hề báo trước. (Process có thể hiểu nôm na là trạng thái nghỉ của một ứng dụng, khi Process của ứng dụng đó tồn tại nó sẵn sàng được bật lại ngay khi ta cần sử dụng, gần như không có độ trễ. Nếu Process bị đóng thì coi như ta mở lại ứng dụng đó từ đầu, CPU phải hoạt động cho một chu trình mới - tốn ram và hao pin)
    3) CFQ
    Ưu tiên xử lí ứng dụng đang chạy trực tiếp (ứng dụng mà ta thao tác ngay lúc này). Đợi khi ứng dụng đó kết thúc hoạt động mới tiếp tục xử lí các ứng dụng khác.
    Ưu điểm: Scheduler này giúp máy chạy mượt mà ứng dụng mà bạn đang thao tác từ khi bắt đầu đến khi dừng lại. Thích hợp khi xử lí đa nhiệm
    Nhược điểm: Một số người báo lại rằng Scheduler này gây độ trễ khi quét các tập tin media
    4) BFQ
    Thay vì phân bổ kiểu CFQ thì BFQ đưa ra 1 danh sách cần xử lí (nhưng không có chế độ ưu tiên như Deadline) và hoạt động lần lượt cho tới khi hết danh sách đó
    Ưu điểm: tăng tốc độ truyền tải dữ liệu (đọc/ghi), giúp việc xử lí video trực tuyến hoặc khi quay video HD trở nên trơn tru hơn, được cho tốt hơn CFQ khoảng 30% khi xử lí trên hầu hết các hoạt động.
    Nhược điểm: có thể ảnh hưởng xấu đến 1 vài tương tác và tăng độ trễ
    5) SIO
    Là một Scheduler đơn giản nhằm mục đích sao cho giảm độ trễ hệ thống ở mức thấp nhất có thể nhưng chỉ mang tính cơ bản, là sự kết hợp giữa NoopDeadline, không sắp xếp lại hoạt động cũng không phân theo yêu cầu.
    Ưu điểm: đơn giản, đáng tin cậy, giảm thiểu sự đòi hỏi mà ứng dụng vẫn hoạt động mượt mà
    Nhược điểm: chế độ đọc ngẫu nhiên hoặc tuần tự trên các ổ đĩa là không thực sự tốt
    6) V(R)
    Không giống như các Scheduler khác, V(R) yêu cầu đồng bộ và không đồng bộ không được xử lí một cách riêng biệt. Thay vì hoạt động theo kiểu ưu tiên, thứ tự hoặc danh dách thì V(R) xử lí hoạt động nào vừa được đưa ra mới nhất.
    Ưu điểm: theo các thức sử dụng của phần đa người dùng thì có thể coi cách xử lí của V(R) là tốt nhất (có thể lấy làm chuẩn) khi nó làm việc ở hiệu suất cao nhất ( tuy nhiên điều này là không thường xuyên)
    Nhược điểm: hiệu suất biến động thường dưới mức trung bình, ít đáng tin cậy và thiếu ổn định nhất
    7) Anticipatory
    Là một Scheduler thiên về xử lí các hoạt động liên quan đến ổ đĩa dựa trên 2 điều cơ bản: tìm kiếm và ghi/đọc
    Ưu điểm: cải thiện tốc độ đọc và tìm kiếm trên ổ đĩa
    Nhược điểm: xử lí tình huống thiếu tin cậy và giảm tốc độ ghi trên các ổ đĩa hiệu năng cao (ví dụ thẻ nhớ class 10 dùng Scheduler này sẽ bị giảm tốc độ ghi)
    Tựu chung lại:
    Sau khi tham khảo hết 7 Scheduler trên có bạn sẽ hỏi mình Scheduler nào tốt nhất. Quả thật không có cái nào gọi là tốt nhất, nó phụ thuộc vào cách thức sử dụng của mỗi người và sự kết hợp với Governor.
    Tuy nhiên, xem xét hiệu suất tổng thể, pin, độ tin cậy và độ trễ thấp, người ta tin rằng SIO > Noop > Deadline > VR > BFQ > CFQ là 1 thứ tự hợp lí


  2. Offline

    orionlv.1708 Member

    Số bài viết:
    58
    Đã được thích:
    4

Chia sẻ trang này