HƯỚNG DẪN KIỂM TRA HIỆU NĂNG MÁY TÍNH KHI R HOẠT ĐỘNG

Mình sử dụng 2 màn hình (dual monitor) khi làm việc, một màn hình dùng chạy R, một màn hình mở cửa sổ task manager kiểm tra hoạt động CPU và Memory máy tính. Khi chụp màn hình thì ta có file ảnh này, để xem full-size bạn click vào hình ảnh nhé.

Xem thêm: Các lệnh kiểm tra hiệu năng máy tính

Khi R hoạt động (cụ thể là mình sử dụng phiên bản 64-bit build R-base trên windows 10 64-bit) thì sẽ sử dụng 1 core CPU cho mỗi session (phần lớn các ngôn ngữ lập trình khác cũng như vậy, nếu bạn muốn chạy nhiều core thì cần setup thêm một chút để chạy song song nhé, like the majority of programming languages, R runs on one CPU core by default.)

https://jstaf.github.io/hpc-r/parallel/

R là ngôn ngữ lập trình hướng đối tượng, và R lưu các đối tượng (object) này trong memory máy tính (RAM máy tính) do đó các tác vụ tính toán xử lý trong R sẽ do 2 yếu tố chính quyết định:

1/ Tốc độ tính toán: CPU (run nhiều core sẽ nhanh hơn 1 core)

2/ Khả năng để tính toán được (phải lưu được object vào RAM rồi mới nói đến chuyện tính toán trên object đó): RAM (dung lượng RAM càng lớn thì về cơ bản, R sẽ xử lý được các dữ liệu lớn).

Máy tính cá nhân thường có RAM từ 4-32 GB tùy cấu hình, nếu bạn có điều kiện thì trang bị nhiều RAM để chạy R là ổn, hoặc có thể chạy trên cloud (ví dụ Posit cloud) hay các dịch vụ tương tự.

Trong bài viết này, giúp làm rõ hơn cho các lệnh kiểm tra hiệu năng máy tính thì mình minh họa qua việc ta import object (là bản đồ được plot từ shapefile worldmap level 3) sau đó export ra file png có kích thước lớn. Mình mở các cửa sổ task manager cũng như resource monitor mặc định trên windows để ghi nhận quá trình R "tiêu tốn" RAM như thế nào khi chạy tác vụ nặng.

Mục đích của bài viết này để giải thích cho lý do vì sao khi bạn làm gì đó quá "nặng" theo nghĩa là RAM máy tính không đủ bộ nhớ thì sẽ bị crash session, không chạy được file đó, giúp ta có cơ sở đánh giá năng lực máy tính với khả năng mà R sẽ xử lý được trên cấu hình máy tính hiện tại.

Như vậy, bài viết giúp minh họa rõ quá trình R hoạt động và hệ điều hành cũng căng mình chạy theo các hoạt động của R để sau cùng bạn thu được các kết quả và hình ảnh, bảng biểu từ quá trình tính toán phức tạp bên trong đó.

Lẽ đương nhiên, sẽ có nhiều cách tiếp cận giúp bạn xử lý được câu chuyện tràn bộ nhớ RAM hay tốc độ máy tính chạy chậm khi running bằng R, cách đơn giản nhất là nếu máy tính bạn running object gì đó không được thì có thể nhờ mình debug lỗi, nếu câu chuyện thuộc về cấu hình máy tính thì là chuyện không khó (vì ta có thể thuê hpc cloud để run data), vấn đề khó hơn là cần tối ưu lại đoạn code để giảm thiểu các phép tính không cần thiết giúp quá trình xử lý dữ liệu gọn gàng nhất có thể.

Chúc các bạn ứng dụng R có hiệu quả vào công việc.

P/S: Bạn không cần set limit hay maximum RAM khi R hoạt động nhé, vì mặc định khi chạy trên windows là R sẽ tìm cách xài hết RAM (nếu còn trống) để lưu object và running kết quả cho bạn. Bạn có thể gõ dòng ?Memory trên console để xem thông tin chi tiết về cơ chế hoạt động của R.

Khi làm việc với R mà bạn quan tâm đến chuyện R hoạt động ra sao trên máy tính (máy tính có đủ sức để chạy R hay không) là bạn đang đi vào chủ đề tìm cách tối ưu đoạn code trong R để "chạy nhanh nhất có thể" và "xử lý được object lớn nhất có thể" với cấu hình máy tính của mình, nghĩa là bạn đang khai thác triệt để sức mạnh của chiếc máy tính thân yêu vào công việc chuyên môn.

Để dễ tiếp cận khi tối ưu code R thì bạn cần confirm qua các bước sau:

Bước 1: Đảm bảo là đoạn script run được ở small dataset, export ra được kết quả bạn quan tâm. Đây là bước rất quan trọng.

Bước 2: Bạn dùng y chang đoạn script đó (chưa được tối ưu) để run với real dataset để xem chạy thô bạo như vậy thì máy tính có đáp ứng ổn áp hay không (R có bị crash hay không).

Bước 3:

• Trường hợp 1: Nếu R không bị crash (chúc mừng bạn nha!) mà chỉ là chạy hơi lâu thôi, thì bạn cứ để cho R chạy là được. Khỏi tốn chất xám tối ưu code làm chi.

• Trường hợp 2: Nếu R bị crash, thì có nghĩa là big dataset của bạn vượt qua khả năng chịu đựng của máy tính. Bạn có thể nghĩ đến việc gửi file script và object cho bạn nào đó có máy tính cấu hình mạnh hơn để run hoặc tìm cách sửa lại code cho gọn nhẹ hơn.

Bước 4: Cách tối ưu code trong R liên quan đến các lệnh for-loop (thường sẽ chậm hơn các lệnh họ apply) hay là bạn cần chia chẻ các bước tính toán cho phù hợp lại (The Split-Apply-Combine Strategy for Data Analysis) hay dùng code C thay vì code R (thông qua các package convert).

Nhìn chung chuyện tối ưu code R để chạy nhanh hơn (benchmarking test) khá phức tạp, vì từng tình huống cụ thể sẽ có cách chiến thuật optimize khác nhau. Bạn có thể inbox mình khi có nhu cầu tối ưu code R nhé.

Qua bài viết này ta thấy R hay các ngôn ngữ lập trình khác đều là những công cụ/phương tiện để xử lý dữ liệu, mỗi món đều có thế mạnh và giới hạn triển khai (strengths and limitations). Việc ta nhận biết giới hạn của từng công cụ sẽ giúp mình sử dụng hiệu quả nhất công cụ đó vào đúng thế mạnh được-thiết-kế của nó.

R is a programming language for statistical computing and data visualization. It has been adopted in the fields of data mining, bioinformatics, and data analysis. The core R language is augmented by a large number of extension packages, containing reusable code, documentation, and sample data. (wikipedia)