Sử dụng CPU Profiler kiểm tra hoạt động CPU và phương pháp tìm ra dấu vết
Trong những bài viết trước của tôi đã đề cập nhiều đến chủ đề Android Performance một vấn đề rất đáng lưu tâm khi chúng ta muốn hoàn thiện hay nâng cấp sản phẩm của mình tốt hơn. Vậy là chúng ta đã cùng nhau tìm ra nhiều giải pháp để nâng cao hiệu năng của ứng dụng nhưng làm thế nào để đánh giá mỗi ...
Trong những bài viết trước của tôi đã đề cập nhiều đến chủ đề Android Performance một vấn đề rất đáng lưu tâm khi chúng ta muốn hoàn thiện hay nâng cấp sản phẩm của mình tốt hơn. Vậy là chúng ta đã cùng nhau tìm ra nhiều giải pháp để nâng cao hiệu năng của ứng dụng nhưng làm thế nào để đánh giá mỗi chức năng nhỏ ứng dụng đang chạy cho thấy hiệu năng đang ở mức tốt nhỉ ? Phải có 1 Tool nào để kiểm tra điều này chứ ? :cowboy: Để tìm ra câu trả lời cho câu hỏi thú vị ở trên thì mời các bạn cùng đọc nội dung phía dưới nhé ...
1. What is CPU Profiler ?
CPU Profiler là công cụ giúp cho việc kiểm tra hoạt động của những Thread , mức độ sử dụng CPU và ghi lại phương pháp tìm dấu vết. Công cụ đắc lực giúp cho quá trình tối ưu và debug code. Ngoài ra nếu bạn theo dõi những bản Android Studio trước đây thì CPU Profiler là tool mới từ version 3.0, nó thay thế cho CPU Monitor (ở các bản cũ hơn) (Hình ảnh CPU Monitor - bản cũ)
- Mở CPU Profiler :
Click View > Tool Windows > Android Profiler
Click vào bất kì vị trí nào trong CPU :
2. Why you should profile CPU usage ?
Từ màn hình theo dõi hoạt động của CPU , nếu ứng dụng hiện tại "tiêu tốn" việc CPU xử lý càng nhiều thì ứng dụng của bạn hoạt động trì trệ , trải nghiệm người dùng không cao và ngược lại. Cho thấy rằng sau quá trình bạn tối ưu hóa ứng dụng của mình, nếu kết quả hiển thị trên CPU hoạt động thấp hơn lúc trước thì công việc của bạn đã có thành công nhất định rồi đấy. Để có những thông tin chi tiết về hoạt động của CPU và các Thread tương tác với ứng dụng của bạn thì cần phải xem cách thức ứng dụng thực thi mã code và bạn cần ghi lại những hoạt động tìm dấu vết này. Phần này tôi đã đề cập ngay ở phía dưới.
3. CPU Profiler overview
- Event timeline: Hiển thị các hoạt động trong ứng dụng của bạn khi có sự chuyển đổi qua lại các trạng thái khác nhau trong vòng đời của chúng và cho biết các tương tác của người dùng với thiết bị bao gồm việc xoay màn hình.
- CPU timeline: Hiển thị hoạt động của CPU theo thời gian thực theo tỷ lệ phần trăm của tổng thời gian CPU có sẵn và tổng số thread ứng dụng của bạn đang dùng. Bạn có thể so sánh App hiện tại đang chạy với những ứng dụng khác bằng việc di chuyển chuột dọc theo trục ngang của timeline
- Thread activity timeline: Liệt kê danh sách các Thead tham gia vào ứng dụng và chỉ ra hoạt động của nó trong khoảng thời gian bằng việc sử dụng màu sắc:
-
Green : Thread đang hoạt động hoặc đã sẵn sàng sử dụng CPU ( đang chạy)
-
Yellow : Đang hoạt động nhưng phải chờ hoạt động của I/O ( ví dụ phải chờ internet để hoàn thành công việc)
-
Gray : Đang ngủ, không dùng CPU
- Recording configurations : Chuyển đổi tùy chọn để xác đinh cách trình ghi lại phương pháp theo dõi
-
Sampled : cấu hình mặc định chụp lại các hoạt động stack trong thời gian ngắn
-
Instrumented : Cấu hình mặc định cho phép ứng dụng của bạn chạy khi chạy để ghi dấu thời gian ở đầu và cuối mỗi cuộc gọi phương thức. Timestamps được thu thập và so sánh để tạo ra các phương pháp theo dõi dữ liệu, bao gồm thông tin về thời gian và sử dụng CPU. Lưu ý rằng chi phí hoạt động liên quan đến công cụ cho mỗi phương pháp ảnh hưởng đến hiệu suất của thời gian chạy và có thể ảnh hưởng đến dữ liệu định hình - điều này thậm chí còn đáng chú ý hơn đối với các phương pháp có chu kỳ ngắn tương đối. Ngoài ra, nếu ứng dụng của bạn thực hiện một số lượng lớn các phương pháp trong một thời gian ngắn, trình hồ sơ có thể nhanh chóng vượt quá giới hạn kích thước tệp của nó và không thể ghi lại bất kỳ dữ liệu truy tìm nữa.
-
Edit configurations : Cho phép bạn thay đổi mặc định nhất định của các cấu hình ghi âm được lấy mẫu và dụng cụ được mô tả ở trên và lưu chúng dưới dạng cấu hình tùy chỉnh. Để tìm hiểu thêm, hãy đi tới phần về tạo cấu hình ghi âm.
-
Record button : Bắt đầu và ngừng ghi âm dấu vết phương pháp. Để tìm hiểu thêm, hãy đi tới phần về ghi âm và kiểm tra dấu vết phương pháp.
4. Record and inspect method traces
Để thực hiện ghi lại dấu vết hãy chọn cấu hình ghi : Sampled hoặc Instrumented hoặc 1 cấu hình ghi nào khác mà bạn đã tạo từ trước. Chọn button Record để bắt đầu quá trình ghi. Sau khi stop Record thì cho phép chọn khoanh vùng 1 giai đoạn nhất định để bạn check chi tiết hơn. (Hình ảnh trên)
- Selected time frame: Xác định phần khung thời gian đã ghi mà bạn muốn kiểm tra trong khung dấu vết. Khi bạn lần đầu tiên ghi lại dấu vết phương pháp, CPU Profiler sẽ tự động chọn toàn bộ chiều dài của bản ghi trong dòng thời gian của CPU. Nếu bạn muốn kiểm tra dữ liệu theo dõi phương pháp chỉ cho một phần của khung thời gian đã ghi, bạn có thể nhấp và kéo các cạnh của vùng được đánh dấu để sửa đổi độ dài của nó.
- Timestamp: Cho biết thời gian bắt đầu và kết thúc của một phương thức ghi lại (tương đối khi người lập hồ sơ bắt đầu thu thập thông tin sử dụng CPU từ thiết bị của bạn). Bạn có thể nhấp vào dấu thời gian để tự động chọn toàn bộ bản ghi như khung thời gian đã chọn - điều này đặc biệt hữu ích nếu bạn có nhiều bản ghi mà bạn muốn chuyển đổi.
- Trace pane: Hiển thị phương pháp theo dõi dữ liệu cho khung thời gian và chủ đề mà bạn đã chọn. Khung này chỉ xuất hiện sau khi bạn ghi lại ít nhất một dấu vết phương pháp. Trong ô này, bạn có thể chọn cách bạn muốn xem từng dấu ngăn xếp (sử dụng các tab dấu vết) và cách bạn đo thời gian thực hiện (sử dụng menu thả xuống tham chiếu thời gian).
- Chọn để hiển thị phương pháp theo dõi của bạn như là một cây Top Down, Bottom Up tree, Call Chart, hoặc Flame Chart. Bạn có thể tìm hiểu thêm về mỗi tab dấu vết trong các phần dưới đây.
- Chọn một trong các tùy chọn sau từ trình đơn thả xuống để xác định thông tin thời gian cho mỗi cuộc gọi phương thức được đo như thế nào:
- Wall clock time: thông tin về thời gian thể hiện thời gian trôi qua thật sự.
- Thread time: thông tin về thời gian thể hiện thời gian trôi qua thực tế trừ đi bất kỳ phần nào trong thời gian đó thread không tiêu tốn tài nguyên CPU. Đối với bất kỳ phương pháp nào, thời gian luồng của nó luôn ít hơn hoặc bằng thời gian đồng hồ treo tường. Sử dụng thời gian luồng cho bạn hiểu rõ hơn về việc sử dụng CPU thực tế của một luồng nào đó được tiêu thụ theo một phương pháp nhất định.
5. Tổng hợp
Vừa rồi tôi đã đề cập cách thức sử dụng Tool CPU Profiler được tích hợp sẵn trong bản Android Studio 3.0, hy vọng rằng bài viết đem lại sự hữu ích nhất định cho các bạn đang thực hiện optimize ứng dụng của mình !!