Ini adalah perintah pmgenmap yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS
PROGRAM:
NAMA
pmgenmap - menghasilkan kode C untuk menyederhanakan penanganan metrik kinerja
RINGKASAN
pmgenmap [masuk]
DESKRIPSI
Diberikan satu atau beberapa daftar nama metrik di masuk atau pada masukan standar, pmgenmap menghasilkan
C deklarasi dan cpp(1) makro yang cocok untuk digunakan di seluruh Metrik Kinerja
Antarmuka Pemrograman (PMAPI) pada keluaran standar.
Deklarasi yang dihasilkan oleh pmgenmap menyederhanakan pengkodean untuk aplikasi klien menggunakan
PMAPI-nya.
Masukan harus terdiri dari satu atau lebih daftar nama metrik formulir
Daftar nama {
namametrik1 nama simbol1
namametrik2 nama simbol2
...
}
yang akan menghasilkan C dan cpp(1) deklarasi formulir
char *namadaftar[] = {
#tentukan nama simbol1 0
"namametrik1",
#tentukan nama simbol2 1
"namametrik2",
...
};
Deklarasi array yang dihasilkan cocok sebagai parameter untuk pmLookupName(3) dan
#menetapkanKonstanta d dapat digunakan untuk mengindeks vssets di pmHasil struktur dikembalikan oleh a
pmAmbil(3) panggilan.
Jelas, Daftar nama harus sesuai dengan aturan penamaan pengenal C, masing-masing nama simbol harus
sesuai dengan cpp(1) aturan penamaan makro, dan masing-masing nama metrik diharapkan menjadi valid
nama metrik kinerja (lihat malam hari(5) untuk lebih jelasnya).
Masukan mungkin termasuk: sh-gaya baris komentar, yaitu dengan `#' sebagai non-kosong pertama
karakter garis, dan ini diterjemahkan pada output ke baris tunggal atau multi-
komentar baris C dalam gaya K&R. Misalnya, masukan:
# blok utama komentar multi-baris
# grup inisialisasi
foo {
abc SATU
defg DUA
# blok multi-garis yang disematkan
# komentar dan teks pad membosankan
xx.yy.zz TIGA
}
# komentar satu baris tertinggal
Menghasilkan keluaran:
/*
* blok terkemuka komentar multi-baris
* grup inisialisasi
*/
karakter *foo[] = {
#tentukan SATU 0
"abc",
#tentukan DUA 1
"defg",
/*
* blok multi-garis yang disematkan
* komentar dan teks pad membosankan
*/
#tentukan TIGA 2
"xx.yy.zz",
};
/* trailing komentar satu baris */
CONTOH
Untuk singkatnya kami telah menghapus kode penanganan kesalahan, dan menganggap metrik yang dipilih tidak
memiliki banyak nilai.
File masukan
Statistik saya {
kernel.percpu.cpu.idle IDLE
kernel.percpu.cpu.sys SYS
kernel.percpu.cpu.user PENGGUNA
hinv.ncpu NCPU
}
menghasilkan kode C berikut, cocok untuk #include-ing
/*
* Peta Ruang Nama Metrik Kinerja
* Dibangun oleh pmgenmap dari file
* mystats.metrik
* pada Rab 28 Des 19:44:17 EST 1994
*
* Jangan edit file ini!
*/
char *statistikku[] = {
#menentukan IDLE 0
"kernel.percpu.cpu.idle",
#menentukan SYS 1
"kernel.percpu.cpu.sys",
#tentukan PENGGUNA 2
"kernel.percpu.cpu.user",
#menentukan NCPU 3
"hinv.ncpu",
};
Menggunakan kode yang dihasilkan oleh pmgenmap, kami sekarang dapat dengan mudah mendapatkan metrik dari
Performance Metrics Collection Subsystem (PMCS) sebagai berikut:
#tentukan MAX_PMID 4
int perjalanan = 0;
int nummid = ukuran dari(statistikku)/ukuran(stataku[0]);
durasi ganda;
pmHasil *resp;
pmResult *sebelumnya;
daftar pmID pmid[MAX_PMID];
pmNewContext(PM_CONTEXT_HOST, "localhost");
pmLookupName(numpmid, mystats, pmidlist);
pmFetch(numpmid, pmidlist, &resp);
printf("%d CPU: %d usr %d sistem %d idle0,
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);
Beberapa panggilan untuk memastikan portabilitas telah dihapus dari kode di atas demi
kejelasan - contoh di atas tidak boleh digunakan sebagai template untuk pemrograman. Di dalam
khususnya, nilai mentah metrik digunakan ketika pmPencarianDesc(3) seharusnya
dipanggil untuk menentukan semantik setiap metrik.
Contoh yang lebih lengkap yang menunjukkan penggunaan pmgenmap yang dapat digunakan sebagai dasar
untuk pengembangan program disertakan dalam demo PCP, mis $PCP_DEMOS_DIR/klien pm.
Gunakan pmgenmap online menggunakan layanan onworks.net