Đây là lệnh pmgenmap có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình mô phỏng trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
bản đồ chiều - tạo mã C để đơn giản hóa việc xử lý các số liệu hiệu suất
SYNOPSIS
bản đồ chiều [trong tập tin]
MÔ TẢ
Đưa ra một hoặc nhiều danh sách tên chỉ số trong trong tập tin hoặc trên đầu vào tiêu chuẩn, bản đồ chiều tạo
Khai báo C và cpp(1) macro phù hợp để sử dụng trên các Chỉ số hiệu suất
Giao diện lập trình (PMAPI) trên đầu ra tiêu chuẩn.
Các tuyên bố được đưa ra bởi bản đồ chiều đơn giản hóa việc mã hóa cho các ứng dụng khách bằng cách sử dụng
PMAPI.
Dữ liệu đầu vào phải bao gồm một hoặc nhiều danh sách tên số liệu có dạng
danh sách tên {
tên số liệu1 ký hiệuname1
tên số liệu2 ký hiệuname2
...
}
sẽ tạo ra C và cpp(1) khai báo mẫu
char *tên danh sách[] = {
#xác định tên ký hiệu1 0
"tên số liệu1",
#xác định tên ký hiệu2 1
"tên số liệu2",
...
};
Các khai báo mảng được tạo ra phù hợp làm tham số cho pmLookupName(3) và
#định nghĩahằng số d có thể được sử dụng để lập chỉ mục vsets trong chiềuKết quả cấu trúc được trả về bởi một
chiềuTìm nạp(3) cuộc gọi.
Chắc chắn, danh sách tên phải tuân theo quy tắc đặt tên định danh C, mỗi quy tắc tên ký hiệu phải
phù hợp với cpp(1) quy tắc đặt tên macro và mỗi quy tắc tên chỉ số dự kiến sẽ hợp lệ
tên chỉ số hiệu suất (xem chiều(5) để biết thêm chi tiết).
Đầu vào có thể bao gồm sh-các dòng bình luận kiểu, tức là có `#' là trường không trống đầu tiên
ký tự của một dòng và chúng được dịch ở đầu ra thành một dòng hoặc nhiều dòng
nhận xét dòng C theo kiểu K&R. Ví dụ: đầu vào:
# khối bình luận nhiều dòng ở đầu
# nhóm khởi tạo
foo {
abc MỘT
defg HAI
# khối nhúng nhiều dòng
# bình luận và văn bản nhàm chán
xx.yy.zz BA
}
# dòng bình luận ở cuối
Tạo ra đầu ra:
/*
* khối bình luận nhiều dòng hàng đầu
* nhóm khởi tạo
*/
char *foo[] = {
#xác định MỘT 0
"abc",
#xác định HAI 1
"defg",
/*
* khối nhúng nhiều dòng
* bình luận và văn bản pad nhàm chán
*/
#xác định BA 2
"xx.yy.zz",
};
/* chú thích một dòng ở cuối */
THÍ DỤ
Để cho ngắn gọn, chúng tôi đã xóa mã xử lý lỗi và giả sử các số liệu đã chọn không
có nhiều giá trị.
Tệp đầu vào
số liệu thống kê của tôi {
kernel.percpu.cpu.idle IDLE
kernel.percpu.cpu.sys SYS
kernel.percpu.cpu.user NGƯỜI DÙNG
hinv.ncpu NCPU
}
tạo ra mã C sau đây, phù hợp với #include-NS
/*
* Bản đồ không gian tên số liệu hiệu suất
* Được xây dựng bởi pmgenmap từ tệp
* mystats.metrics
* vào Thứ Tư ngày 28 tháng 19 44:17:1994 EST XNUMX
*
* Không chỉnh sửa tập tin này!
*/
char *mystats[] = {
#xác định IDLE 0
"kernel.percpu.cpu.idle",
#define SYS 1
"kernel.percpu.cpu.sys",
#xác định NGƯỜI DÙNG 2
"kernel.percpu.cpu.user",
#xác định NCPU 3
"hinv.ncpu",
};
Sử dụng mã được tạo bởi bản đồ chiều, giờ đây chúng tôi có thể dễ dàng thu được số liệu từ
Hệ thống con thu thập số liệu hiệu suất (PMCS) như sau:
#define MAX_PMID 4
chuyến đi int = 0;
int nummid = kích thước(mystats)/sizeof(mystats[0]);
thời gian gấp đôi;
chiềuResult *resp;
pmResult *prev;
danh sách pmID pmid[MAX_PMID];
pmNewContext(PM_CONTEXT_HOST, "localhost");
pmLookupName(numpmid, mystats, pmidlist);
pmFetch(numpmid, pmidlist, &resp);
printf("%d CPU: %d usr %d sys %d nhàn rỗi0,
resp->vset[NCPU]->vlist[0].value.lval,
resp->vset[USER]->vlist[0].value.lval,
resp->vset[SYS]->vlist[0].value.lval,
resp->vset[IDLE]->vlist[0].value.lval);
Một số lệnh gọi để đảm bảo tính di động đã bị xóa khỏi mã ở trên vì mục đích
rõ ràng - không nên sử dụng ví dụ trên làm mẫu để lập trình. TRONG
cụ thể, các giá trị thô của số liệu đã được sử dụng khi chiềuTra cứuDesc(3) lẽ ra phải được
được gọi để xác định ngữ nghĩa của từng số liệu.
Các ví dụ đầy đủ hơn chứng minh việc sử dụng bản đồ chiều có thể được sử dụng làm cơ sở
để phát triển chương trình được bao gồm trong các bản demo của PCP, ví dụ: $PCP_DEMOS_DIR/pmclient.
Sử dụng pmgenmap trực tuyến bằng dịch vụ onworks.net