Nmon là gì?
nmon (Nigel's performance Monitor for Linux) là một công cụ giám sát hiệu suất Linux. Hiện tại, nó hỗ trợ năm kiến trúc CPU: Power/x86/x86_64/Mainframe/ARM. Nó có thể lưu dữ liệu được giám sát ở định dạng JSON để phân tích và hiển thị bằng các công cụ khác.
Tại sao phải biên dịch và cài đặt nmon?
Mặc dù nmon hỗ trợ nhiều bản phân phối Linux (như Red Hat, SUSE, Ubuntu, Fedora, OpenSUSE, v.v.), bạn vẫn có thể tìm thấy gói của nó trong kho lưu trữ của các bản phân phối này và cài đặt nó.
Đối với các bản phân phối không cung cấp gói biên dịch sẵn, bạn cần phải biên dịch và cài đặt nó.
Làm thế nào để biên dịch và cài đặt nmon?
nmon chính thức cung cấp hướng dẫn biên dịch và cài đặt, đó là biên dịch nmon bằng cách sửa đổi makefile + tệp mã nguồn. Địa chỉ như sau:
Mã nguồn thường được đặt tên là lmon phiên bản số.c. Ví dụ, phiên bản mới nhất là lmon16n.c. Bạn cũng có thể tải xuống phiên bản mới nhất trong danh sách hướng dẫn biên dịch.
Chuẩn bị hai tệp này là bước đầu tiên. Tiếp theo, bạn cần tự hỏi mình một vài câu hỏi. Bằng cách đặt những câu hỏi sau, bạn có thể biết tham số biên dịch nào cần sử dụng và cách sửa đổi tệp makefile:
- Câu hỏi 1: Makefile có chứa các tập lệnh (thẻ) cho môi trường tôi cần không?
- Câu hỏi 2: Kiến trúc CPU của môi trường nơi nmon sẽ chạy là gì?
- Câu hỏi 3: Phiên bản hạt nhân Linux của môi trường mà nmon sẽ chạy thấp hơn 2.6.18 phải không?
Câu hỏi 1 chứa kịch bản yêu cầu
Nếu nó được bao gồm trong câu hỏi 1, bạn có thể trực tiếp đưa nó vào môi trường biên dịch (môi trường Linux có cài đặt gcc*, ncurses-dev* và make, lấy Ubuntu làm ví dụ: sudo apt update && sudo apt install -y gcc* ncurses-dev* make), đưa mã nguồn vào cùng thư mục với makefile, vào thư mục và thực thi lệnh ln lmon version.c lmon.c && make label name. Ví dụ, nếu bạn cần nmon cho kiến trúc Ubuntu 18.04 x86_64, chỉ cần mở makefile và xem liệu bạn có thể tìm thấy tập lệnh tương tự như hình sau hay không:
Tên nhãn trong hộp màu đỏ gồm ba phần, nmon + AMD64 + ubuntu1804, nghĩa là nmon của ubuntu18.04 cho x86_64. Tên nhãn này thường nhất quán với tên tham số sau -o trong dòng đặt tên cc bên dưới, nghĩa là tệp đích có cùng tên sẽ được in ra cuối cùng.
Tìm tập lệnh cần thiết, ở đây chúng tôi sử dụng lmon16n.c, lệnh như sau:
sudo apt update sudo apt install -y gcc* ncurses-dev* tạo ln lmon16n.c lmon.c tạo nmon_AMD64_ubuntu1804
Sau khi biên dịch hoàn tất, một tệp mục tiêu có tên nmon_AMD64_ubuntu1804 sẽ được tạo. Bạn có thể đổi tên thành nmon và đặt nó vào hệ điều hành cần sử dụng nmon để giám sát.
ps: Nếu có tập lệnh biên dịch tương ứng, bạn không cần phải đọc nó sau.
Vấn đề 1: Không bao gồm tập lệnh bắt buộc
Nếu không có tập lệnh tương ứng, bạn phải xem sâu hơn vào cấu trúc của makefile để hiểu các tham số là gì:
Như thể hiện trong hình, hộp màu đỏ biểu thị tên tệp đích hoặc tên thẻ makefile; hộp màu xanh biểu thị các tệp bắt buộc, có thể bỏ qua; hộp màu vàng biểu thị các tham số kiến trúc CPU đầu vào; hộp màu xanh lá cây chỉ định tối ưu hóa được thực hiện cho phiên bản phân phối nhất định trong tập lệnh. Nói chung, -D và các tham số theo sau nó tương đương với #define XXX trong ngôn ngữ C. Do đó, phải có những phán đoán có điều kiện trong mã nguồn, như được thể hiện trong UBUNTU bên dưới.
Bây giờ chúng ta đã hiểu tất cả những điều này, chúng ta chỉ cần xác nhận những tham số nào có sẵn và sau đó chúng ta có thể biên dịch phiên bản cần thiết.
Tôi đã xem nhanh mã nguồn và sắp xếp các tham số thường dùng.
Các thông số kiến trúc CPU phổ biến:
- ĐIỆN - PowerPC
- MAINFRAME - Máy chủ lớn
- X86 - x86 và x86_64 chung
- ARM - arm-chung
Các tham số phân phối chung:
- SLES/SLES12/SLES113 - Máy chủ doanh nghiệp Suse Linux
- RHEL6/RHEL7 - RedHat6 và RedHat7 và 8
- UBUNTU - Ubuntu đầy đủ
Các thông số liên quan đến phiên bản hạt nhân Linux:
- PRE_KERNEL_2_6_18/KERNEL_2_6_18 - dành cho các phiên bản hạt nhân Linux bằng hoặc thấp hơn 2.6.18, phiên bản trước dành cho 16j trở lên, phiên bản sau dành cho các phiên bản trước đó
Các thông số liên quan đến card đồ họa NVIDIA:
Sau đây là một ví dụ khác về việc biên dịch nmon cho hạt nhân CentOS 7.8 phiên bản 5.4.200 cho kiến trúc ARM:
Thêm hai dòng vào cuối tập lệnh makefile:
nmon_ARM_centos7: cc -o nmon_ARM_centos7 $(TỆP) $(CFLAGS) $(LDFLAGS) -D ARM
Có hai cân nhắc chính: kiến trúc ARM sử dụng tham số -D ARM và các phiên bản kernel lớn hơn 2.6.18 không cần thêm các tham số liên quan đến kernel. Lưu ý: Không được có khoảng trắng trước dòng cc, phải là ký tự TAB.
Tệp đích đã được biên dịch thành công. Bạn có thể đổi tên và sao chép vào môi trường cần thiết. Tất nhiên, bạn có thể để nguyên như vậy.
Tóm tắt
Bài viết này giới thiệu vắn tắt nmon là gì, lý do biên dịch và cài đặt nmon, và cách biên dịch nmon. Nếu bài viết này hữu ích với bạn, hãy thích, theo dõi và bình luận. Bài viết này kết thúc tại đây.
tham khảo:
- "Viết Makefile cùng tôi" Tác giả: Chen Hao
- "Giải thích các tham số GCC" Hướng dẫn cho người mới bắt đầu
- 《Biên dịch Nmon nmon cho Linux - Biên dịch từ Mã nguồn》
Cuối cùng, bài viết này về biên dịch và cài đặt nmon kết thúc tại đây. Nếu bạn muốn biết thêm về biên dịch và cài đặt nmon, vui lòng tìm kiếm các bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!