Liên hệProfile
Danh mục

Mục Lục

    Lệnh perf trong Linux là gì? Tổng hợp lệnh perf cơ bản trong Linux

    Nguyễn Hưng

    Ngày đăng:

    05/05/2026

    Cập nhật lần cuối:

    05/05/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    Đánh giá bài viết

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    05/05/2026

    Cập nhật lần cuối:

    05/05/2026

    Mục lục

    Trong những lần xử lý sự cố server bị treo cứng mà không rõ nguyên nhân, perf chính là phương án giúp mình soi chiếu chính xác từng chu kỳ CPU để tìm ra hàm xử lý đang gây nghẽn. Việc đọc hiểu các thông số từ công cụ này đã giúp mình tối ưu hóa hiệu suất hệ thống một cách khoa học và chính xác nhất. Trong bài viết này, mình sẽ tổng hợp lại những câu lệnh perf quan trọng giúp bạn ứng dụng công cụ này hiệu quả hơn.

    Những điểm chính

    Đối với mình, việc phân tích hiệu năng hệ thống trên Linux không chỉ giúp phát hiện bottleneck mà còn là nền tảng để tối ưu ứng dụng và tài nguyên một cách chính xác. Để giúp bạn hiểu rõ hơn về lệnh perf trong quá trình sử dụng thực tế, bài viết dưới đây sẽ cung cấp các thông tin gồm:

    • Khái niệm: Hiểu rõ perf là công cụ dòng lệnh phân tích hiệu suất mạnh mẽ, giúp nhận biết vai trò của nó trong việc khám phá sâu cách ứng dụng và kernel sử dụng tài nguyên hệ thống.
    • Yêu cầu cài đặt: Nắm vững các bước cài đặt trên các bản phân phối Linux phổ biến, giúp bạn chuẩn bị môi trường sẵn sàng để bắt đầu sử dụng công cụ.
    • Các lệnh cơ bản: Nắm được các lệnh cốt lõi từ đo lường tổng quan, hiển thị sự kiện đến lấy mẫu chi tiết, giúp bạn thực hiện các tác vụ phân tích hiệu suất hàng ngày.
    • Xử lý lỗi: Nhận biết và khắc phục các lỗi phổ biến như quyền truy cập bị từ chối hoặc thiếu file dữ liệu, giúp giải quyết nhanh các sự cố thường gặp.
    • Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến perf trong Linux.

    Lệnh perf trong Linux là gì?

    Lệnh perf là công cụ phân tích hiệu suất mạnh mẽ, miễn phí trên Linux, hỗ trợ nhà phát triển và quản trị viên hệ thống khám phá sâu cách ứng dụng cùng kernel sử dụng CPU, bộ nhớ và sự kiện phần cứng, Qua đó, nó giúp xác định nguyên nhân gây chậm, tối ưu hóa code và khắc phục vấn đề hiệu năng chi tiết qua giao diện dòng lệnh. Perf dựa trên Performance Monitoring Counters và Kernel Events của Linux cho phép đếm các sự kiện như chu kỳ CPU, lỗi Cache Miss, nhánh rẽ sai, cùng sự kiện phần mềm như Context Switch.

    Perf khắc phục hạn chế của các công cụ giám sát cơ bản như top hay iostat, vốn chỉ cung cấp cái nhìn tổng quan về tình trạng hệ thống. Thay vì dừng ở mức số liệu bề mặt, perf thu thập dữ liệu chi tiết đến cấp vi xử lý, giúp bạn phân tích trực tiếp các nút thắt hiệu năng bên trong CPU và ứng dụng.

    Lệnh perf là công cụ phân tích hiệu suất Linux miễn phí
    Lệnh perf là công cụ phân tích hiệu suất Linux miễn phí

    Yêu cầu cài đặt lệnh perf

    Lệnh perf thường nằm trong gói kernel source và yêu cầu biên dịch phù hợp với kernel đang chạy trên hệ thống. Để tạo trên Debian/Ubuntu thì bạn cần sử dụng lệnh:

    apt update
    apt install linux-tools-$(uname -r)

    Trên CentOS/RHEL, bạn sử dụng lệnh sau:

    yum install perf

    Để kiểm tra hoạt động sau khi tải perf thì bạn cần sử dụng lệnh sau:

    perf list

    Lệnh 1: Đo lường tổng quan

    Lệnh perf giúp đo lường tổng quan và cung cấp cái nhìn nhanh về hiệu năng cơ bản của một lệnh cụ thể. Ví dụ đo số chu kỳ CPU và sự kiện Context Switch khi chạy lệnh ls thì bạn có thể áp dụng lệnh sau:

    perf stat ls -laR /etc
    Output của lệnh perf stat ls -laR /etc
    Lệnh perf stat ls -laR /etc giúp đo lường tổng quan

    Giải thích:

    • perf stat chạy lệnh và hiển thị thống kê tổng hợp các sự kiện mặc định.
    • ls -laR /etc là lệnh cần đo lường. Kết quả bao gồm CPU cycles, instructions, Cache references/misses, Context switches, thời gian thực thi.

    Lệnh 2: Hiển thị sự kiện khả dụng

    Hiển thị sự kiện khả dụng sẽ liệt kê các sự kiện phần cứng, phần mềm và Tracepoint có thể theo dõi trên hệ thống hiện tại với lệnh:

    perf list
    Output của lệnh perf list
    Lệnh perf list giúp hiển thị danh sách các sự kiện khả dụng

    Giải thích:

    • Sự kiện được phân loại rõ ràng (hardware, software, tracepoint, pmu/event).
    • Ví dụ: cache-misses (hardware), cpu-clock (software), syscalls:sys_enter_open (tracepoint).

    Lệnh 3: Lấy mẫu chi tiết

    Lấy mẫu chi tiết sẽ giúp thu thập mẫu để xác định hàm và địa chỉ lệnh tiêu tốn nhiều CPU nhất. Bạn có thể sử dụng lệnh:

    perf record -g -o perf.data my_application_binary

    Giải thích:

    • perf record ghi dữ liệu hiệu năng vào file.
    • -g (call-graph) ghi stack trace để theo dõi lịch sử gọi hàm. -o perf.data lưu kết quả vào file.

    Lệnh 4: Phân tích kết quả

    Đọc và phân tích file perf.data từ bước lấy mẫu trước đó. Bạn có thể sử dụng lệnh:

    perf report -i perf.data

    Giải thích:

    • perf report mở giao diện tương tác phân tích dữ liệu.
    • TUI hiển thị hàm sắp xếp theo tỷ lệ % thời gian CPU sử dụng.

    Lệnh 5: Cú pháp nâng cao

    Kịch bảnCú pháp lệnhGiải thích Logic
    Theo dõi Cache Missesperf stat -e cache-misses,cache-references my_appTheo dõi hai sự kiện cache chính để tính tỷ lệ Hit/Miss.
    Phân tích PID đang chạyperf record -p 1234 -o my_running_app.data sleep 30Lấy mẫu process ID 1234 trong 30 giây.
    Phân tích Context Switchperf record -e context-switches,sched:sched_switch -a sleep 10Ghi sự kiện context switch toàn hệ thống trong 10 giây.
    Kiểm tra Branch Missperf stat -e branches,branch-misses -r 5 my_appTheo dõi nhánh rẽ, lặp 5 lần lấy trung bình.
    Gắn cờ System Callsperf record -e syscalls:sys_enter_open -aGhi mỗi lần gọi system call open().

    Cách xử lý một số lỗi phổ biến

    Trong quá trình sử dụng perf, bạn có thể gặp một số lỗi thường gặp liên quan đến quyền truy cập kernel, file dữ liệu hoặc môi trường cài đặt công cụ. Bảng dưới đây tổng hợp một vài lỗi phổ biến, nguyên nhân và cách khắc phục tương ứng để bạn tra cứu nhanh khi cần:

    Lỗi phổ biếnNguyên nhânKhắc phục
    sys_perf_event_open() syscall returned with 1 (Operation not permitted)Kernel hạn chế quyền truy cập PMC.Chạy lệnh sudo sysctl kernel.perf_event_paranoid=1 hoặc 0
    Cannot parse map entry. File perf.data not found.Thiếu file đầu vào cho perf report.Chỉ định đúng đường dẫn file bằng -i [TÊN_FILE]
    Hàm hiển thị [unknown] hoặc địa chỉ hexThiếu debugging symbols.Cài debugging symbols cho kernel/ứng dụng với flag -g
    perf: command not foundGói linux-tools chưa cài hoặc không khớp kernel.Cài linux-tools-$(uname -r).

    Đối với mình, xử lý lỗi khi dùng perf không chỉ là sửa sự cố mà còn giúp bạn hiểu rõ hơn về hệ thống. Phần lớn lỗi thường đến từ quyền kernel, môi trường hoặc thiếu dữ liệu, nên nếu nắm đúng nguyên nhân thì xử lý sẽ rất nhanh.

    Thay vì “fix cho chạy”, bạn nên hiểu bản chất từng lỗi để tránh lặp lại. Đồng thời, việc chuẩn bị sẵn môi trường (quyền truy cập, linux-tools, file dữ liệu) sẽ giúp hạn chế gần như toàn bộ lỗi phổ biến khi làm việc thực tế.

    Câu hỏi thường gặp

    Lệnh perf cần quyền root để chạy không?

    Perf thường yêu cầu quyền root hoặc điều chỉnh kernel parameter do hạn chế bảo mật PMC. Khắc phục bằng lệnh sudo sysctl kernel.perf_event_paranoid=1 để cho phép root truy cập sự kiện chung.

    Làm thế nào để xem danh sách sự kiện perf hỗ trợ?

    Bạn cần chạy perf list để liệt kê tất cả sự kiện phần cứng (cpu-cycles, cache-misses), phần mềm (context-switches), và tracepoint có sẵn trên hệ thống.

    Lệnh perf là công cụ phân tích hiệu suất Linux mạnh mẽ, giúp xác định và khắc phục vấn đề hiệu năng từ cấp độ CPU đến ứng dụng thực tế. Việc sử dụng perf thường xuyên sẽ nâng cao khả năng tối ưu hóa hệ thống một cách chuyên sâu và hiệu quả. Cảm ơn bạn đã theo dõi bài viết!

    Đánh giá bài viết
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Ansible là gì? Hướng dẫn sử dụng Ansible trên Linux chi tiết cho người mới
    Ansible là gì? Hướng dẫn sử dụng Ansible trên Linux chi tiết cho người mới

    Việc quản trị thủ công từng server đơn lẻ sẽ trở thành rào cản lớn khi hệ thống mở rộng và Ansible chính là giải pháp mình đã áp dụng để đồng bộ hóa cấu hình trên hàng trăm node chỉ với một câu lệnh duy nhất. Những hướng dẫn trong bài viết này không…

    05/05/2026

    Cách sử dụng lệnh lsusb trong Linux để kiểm tra thiết bị USB chi tiết
    Cách sử dụng lệnh lsusb trong Linux để kiểm tra thiết bị USB chi tiết

    lsusb là lệnh dùng để liệt kê các thiết bị USB và bộ điều khiển USB đang được hệ thống nhận diện. Bài viết này được mình đúc kết từ kinh nghiệm xử lý sự cố thực tế cho hàng ngàn máy chủ Linux để hướng dẫn bạn cách sử dụng lsusb với các tùy…

    05/05/2026

    Kubectl là gì? Hướng dẫn quản lý Kubernetes thông qua các lệnh kubectl trên Linux
    Kubectl là gì? Hướng dẫn quản lý Kubernetes thông qua các lệnh kubectl trên Linux

    Kubectl là công cụ dòng lệnh chính thức để giao tiếp và quản lý cụm Kubernetes. Thực tế vận hành hệ thống cho thấy, việc quản trị một cluster phức tạp không thể tách rời khả năng tương tác trực tiếp với API Server. Từ kinh nghiệm triển khai hạ tầng, mình nhận thấy Kubectl…

    05/05/2026

    Podman là gì? Hướng dẫn sử dụng Podman trong Linux để quản lý container không cần Daemon
    Podman là gì? Hướng dẫn sử dụng Podman trong Linux để quản lý container không cần Daemon

    Trong quá trình quản trị hệ thống, mình đã trực tiếp kiểm chứng khả năng tương thích của Podman khi có thể thay thế hoàn toàn Docker mà không làm gián đoạn các workflow hiện có trên Linux. Những thao tác quản lý container không cần Daemon mà mình chia sẻ dưới đây là bộ…

    05/05/2026

    linux

    lenh

    text