InggrisPerancisSpanyol

Ad


favorit OnWorks

guestfs-performance - Online di Cloud

Jalankan kinerja guestfs di penyedia hosting gratis OnWorks melalui Ubuntu Online, Fedora Online, emulator online Windows, atau emulator online MAC OS

Ini adalah perintah guestfs-performance 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


guestfs-performance - engineering libguestfs untuk kinerja terbaik

DESKRIPSI


Halaman ini mendokumentasikan cara mendapatkan kinerja terbaik dari libguestfs, terutama ketika
Anda berharap untuk menggunakan libguestfs untuk memanipulasi ribuan mesin virtual atau gambar disk.

Tiga bidang utama dicakup. Libguestfs menjalankan alat (distribusi Linux kecil)
di dalam qemu/KVM. Dua area pertama adalah: meminimalkan waktu yang dibutuhkan untuk memulai ini
alat, dan berapa kali alat harus dimulai. Daerah ketiga adalah
mempersingkat waktu yang dibutuhkan untuk pemeriksaan VM.

DASAR PENGUKURAN


Sebelum membuat perubahan pada cara Anda menggunakan libguestfs, lakukan pengukuran dasar.

Dasar: Mulai itu alat
Pada mesin yang dibongkar, waktu yang dibutuhkan untuk menghidupkan alat:

waktu guestfish -a /dev/null run

Jalankan perintah ini beberapa kali berturut-turut dan buang beberapa langkah pertama, sehingga Anda
mengukur kasus "cache panas" yang khas.

Penjelasan

Perintah ini memulai alat libguestfs pada disk nol, dan kemudian segera menutup
itu turun. Pertama kali Anda menjalankan perintah, itu akan membuat alat dan menyimpannya di cache
(biasanya di bawah /var/tmp/.guestfs-*). Proses selanjutnya harus menggunakan kembali alat yang di-cache.

Diharapkan hasil

Anda harus berharap untuk mendapatkan waktu di bawah 6 detik. Jika waktu yang Anda lihat di
mesin yang diturunkan berada di atas ini, lalu lihat bagian "MENECUALI KINERJA BURUK"
di bawah.

Dasar: Pertunjukan pemeriksaan of a tamu
Untuk pengujian ini, Anda memerlukan mesin yang tidak dimuat dan setidaknya satu tamu asli atau citra disk.
Jika Anda berencana menggunakan libguestfs hanya untuk X tamu (mis. X = Windows), maka gunakan
tamu X di sini adalah yang paling tepat. Jika Anda berencana untuk menjalankan libguestfs melawan
campuran tamu, lalu gunakan campuran tamu untuk pengujian di sini.

Waktu berapa lama waktu yang dibutuhkan untuk melakukan inspeksi dan memasang disk tamu. Menggunakan
perintah pertama jika Anda akan menggunakan gambar disk, dan perintah kedua jika Anda akan
menggunakan libvirt.

waktu guestfish --ro -a disk.img -i exit

waktu guestfish --ro -d GuestName -i exit

Jalankan perintah beberapa kali berturut-turut dan buang beberapa perintah pertama, sehingga Anda
mengukur kasus "cache panas" yang khas.

Penjelasan

Perintah ini memulai alat libguestfs pada gambar disk bernama atau tamu libvirt,
melakukan inspeksi libguestfs padanya (lihat "INSPEKSI" di tamu(3)), menunggangi tamu
disk, lalu buang semua hasil ini dan matikan.

Pertama kali Anda menjalankan perintah, itu akan membuat sebuah alat dan menyimpannya (biasanya
bawah /var/tmp/.guestfs-*). Proses selanjutnya harus menggunakan kembali alat yang di-cache.

Diharapkan hasil

Anda harus mengharapkan waktu yang 5 detik lebih besar dari yang diukur pada baseline pertama
tes di atas. (Misalnya, jika tes dasar pertama berjalan dalam 5 detik, maka tes ini
harus berjalan dalam 10 detik).

MEMAHAMI THE ALAT DAN KAPAN IT IS DIBANGUN / DITOLAK


Pertama kali Anda menggunakan libguestfs, itu akan membangun dan men-cache sebuah alat. Ini biasanya
in /var/tmp/.guestfs-*, kecuali jika Anda telah menetapkan $TMPDIR atau $LIBGUESTFS_CACHEDIR dalam hal ini
itu akan berada di bawah direktori sementara itu.

Untuk informasi lebih lanjut tentang bagaimana alat ini dibuat, lihat "PERALATAN SUPERMIN" di
supermin(1).

Setiap kali libguestfs dijalankan, ia akan memeriksa bahwa tidak ada file host yang digunakan oleh alat yang memiliki
berubah. Jika ada, maka alat tersebut dibangun kembali. Ini biasanya terjadi ketika sebuah paket
diinstal atau diperbarui pada host (mis. menggunakan program seperti "yum" atau "apt-get"). Itu
alasan untuk merekonstruksi alat adalah keamanan: program baru yang telah
diinstal mungkin berisi perbaikan keamanan, jadi kami ingin menyertakan program tetap di
alat secara otomatis.

Ini adalah implikasi kinerja:

· Proses membangun (atau membangun kembali) alat yang di-cache lambat, dan Anda bisa
hindari hal ini terjadi dengan menggunakan alat tetap (lihat di bawah).

· Jika tidak menggunakan peralatan tetap, ketahuilah bahwa memperbarui perangkat lunak pada host akan menyebabkan
satu kali pembangunan kembali alat.

· / var / tmp (atau $TMPDIR, $LIBGUESTFS_CACHEDIR) harus pada disk cepat, dan memiliki banyak
ruang untuk alat tersebut.

MENGGUNAKAN A TETAP ALAT


Untuk mengontrol sepenuhnya saat alat dibuat, Anda dapat membuat alat tetap. Ini
alat harus disimpan pada disk lokal yang cepat.

Untuk membangun alat, jalankan perintah:

libguestfs-make-fixed-appliance

menggantikan " " dengan nama direktori tempat alat akan disimpan
(biasanya Anda akan memberi nama subdirektori, misalnya: /usr/local/lib/guestfs/appliance or
/dev/shm/alat).

Kemudian atur $LIBGUESTFS_PATH (dan pastikan variabel lingkungan ini disetel di libguestfs Anda
program), atau ubah program Anda sehingga memanggil "guestfs_set_path". Sebagai contoh:

ekspor LIBGUESTFS_PATH=/usr/local/lib/guestfs/appliance

Sekarang Anda dapat menjalankan program libguestfs, alat virt, guestfish, dll. seperti biasa. Program-programnya
akan menggunakan alat tetap Anda, dan tidak akan pernah membangun, membangun kembali, atau menyimpannya sendiri
alat.

(Untuk informasi rinci tentang hal ini, lihat: libguestfs-make-fixed-appliance(1)).

Performance of itu tetap alat
Dalam pengujian kami, kami tidak menemukan bahwa menggunakan alat tetap memberikan hasil yang terukur
manfaat kinerja, bahkan ketika alat berada di memori (mis /dev/shm).
Namun ada dua poin yang perlu dipertimbangkan:

1. Menggunakan alat yang diperbaiki menghentikan libguestf dari membangun kembali alat tersebut, artinya
bahwa libguestfs akan memiliki waktu mulai yang lebih dapat diprediksi.

2. Alat dimuat sesuai permintaan. Tes sederhana seperti:

waktu guestfish -a /dev/null run

tidak memuat terlalu banyak alat. Program libguestfs nyata menggunakan yang rumit
Panggilan API akan menuntut lebih banyak alat. Mampu menyimpan
alat di lokasi tertentu membuat kinerja lebih dapat diprediksi.

MENGURANGI THE NOMOR OF TIMES THE ALAT IS DILUNCURKAN


Sejauh ini yang paling efektif, meskipun tidak selalu cara paling sederhana untuk mendapatkan kinerja yang baik adalah
untuk memastikan bahwa alat diluncurkan beberapa kali. Ini mungkin
melibatkan mengubah aplikasi libguestfs Anda.

Coba panggil "guestfs_launch" paling banyak sekali per mesin virtual target atau gambar disk.

Alih-alih menggunakan contoh terpisah dari ikan tamu(1) untuk membuat serangkaian perubahan pada
tamu yang sama, gunakan satu instance guestfish dan/atau gunakan guestfish --mendengarkan .

Pertimbangkan untuk menulis program Anda sebagai daemon yang menahan tamu terbuka saat membuat seri
dari perubahan. Atau atur semua operasi yang ingin Anda lakukan sebelum membuka tamu.

Anda juga dapat mencoba menambahkan disk dari beberapa tamu ke satu alat. Sebelum mencoba
ini, perhatikan hal-hal berikut:

1. Menambahkan beberapa tamu ke satu alat adalah masalah keamanan karena memungkinkan satu orang
tamu untuk mengganggu disk tamu lain. Lakukan hanya jika Anda mempercayai semua
tamu, atau jika Anda dapat mengelompokkan tamu berdasarkan kepercayaan.

2. Ada batasan keras untuk jumlah disk yang dapat Anda tambahkan ke satu alat. Panggilan
"guestfs_max_disks" di tamu(3) untuk mendapatkan batas ini. Untuk informasi lebih lanjut lihat
"BATAS" di tamu(3).

3. Menggunakan libguestfs dengan cara ini rumit. Disk dapat memiliki interaksi yang tidak terduga: untuk
contoh, jika dua tamu menggunakan UUID yang sama untuk sistem file (karena mereka dikloning),
atau memiliki grup volume dengan nama yang sama (tetapi lihat "guestfs_lvm_set_filter").

kebajikan-df(1) menambahkan beberapa disk secara default, sehingga kode sumber untuk program ini akan menjadi
tempat yang bagus untuk memulai.

MEMENDEKKAN THE WAKTU DIAMBIL UNTUK INSPEKSI OF VMs


Saran utamanya jelas: Jangan melakukan inspeksi (yang mahal) kecuali jika Anda membutuhkan
hasil.

Jika sebelumnya Anda melakukan pemeriksaan pada tamu, maka mungkin aman untuk menyimpan dan
menggunakan kembali hasil dari terakhir kali.

Beberapa disk tidak perlu diperiksa sama sekali: misalnya, jika Anda membuat disk
image, atau jika image disk bukan VM, atau jika image disk memiliki tata letak yang diketahui.

Bahkan ketika inspeksi dasar ("guestfs_inspect_os") diperlukan, inspeksi tambahan
operasi dapat dihindari:

· Memasang disk hanya diperlukan untuk mendapatkan informasi sistem file lebih lanjut.

· Daftar aplikasi ("guestfs_inspect_list_applications") adalah operasi yang mahal
di Linux, tetapi hampir gratis di Windows.

· Menghasilkan ikon tamu ("guestfs_inspect_get_icon") murah di Linux tapi mahal
di Windows.

PARALEL PERLENGKAPAN


Peralatan Libguestfs sebagian besar terikat I/O dan Anda dapat meluncurkan beberapa peralatan di
paralel. Asalkan ada cukup memori bebas, seharusnya ada sedikit perbedaan dalam
meluncurkan 1 peranti vs N peranti secara paralel.

Pada laptop 2-inti (4-utas) dengan RAM 16 GB, menggunakan pengujian (tidak terlalu realistis)
Skrip Perl di bawah ini, plot berikut menunjukkan skalabilitas yang sangat baik saat dijalankan antara 1
dan 20 peranti secara paralel:

12 ++---+----+-----+----+-----+----+----+----+-----+-- -++
+ + + + + + + + + + + *
| |
| * |
11++++
| |
| |
| * * |
10++++
| * |
| |
s | |
9++++
e | |
| * |
c | |
8++*++
o | * |
| |
n 7++++
| * |
d | * |
| |
s 6 ++ ++
| * * |
| * |
| |
5++++
| |
| * |
| * * |
4++++
| |
| |
+ * * * + + + + + + + +
3 +--*-+----+----+----+-----+----+----+----+-----+-- -++
0 2 4 6 8 10 12 14 16 18 20
jumlah peralatan paralel

Dimungkinkan untuk menjalankan lebih dari 20 peralatan secara paralel, tetapi jika Anda menggunakan
libvirt backend maka Anda harus menyadari bahwa di luar kotak libvirt membatasi jumlah
koneksi klien ke 20.

Skrip Perl sederhana di bawah ini digunakan untuk mengumpulkan data untuk plot di atas, tetapi ada
lebih banyak informasi tentang subjek ini, termasuk skrip dan grafik pengujian yang lebih canggih,
tersedia di posting blog berikut:

http://rwmj.wordpress.com/2013/02/25/multiple-libguestfs-appliances-in-parallel-part-1/
http://rwmj.wordpress.com/2013/02/25/multiple-libguestfs-appliances-in-parallel-part-2/
http://rwmj.wordpress.com/2013/02/25/multiple-libguestfs-appliances-in-parallel-part-3/
http://rwmj.wordpress.com/2013/02/25/multiple-libguestfs-appliances-in-parallel-part-4/

#!/usr/bin/env perl

gunakan ketat;
gunakan utas;
gunakan peringatan;
gunakan Sys::Guestfs;
gunakan Waktu::HiRes qw(waktu);

subtes {
my $g = Sys::Guestfs->new;
$g->add_drive_ro ("/dev/null");
$g->luncurkan();

# Anda dapat menambahkan beberapa pekerjaan untuk dilakukan libguestfs di sini.

$g->tutup();
}

# Masukkan semuanya ke dalam cache.
tes (); tes (); tes ();

untuk $nr_threads saya (1..20) {
$start_t saya = waktu();
@utas saya;
foreach (1..$nr_threads) {
dorong @utas, utas->buat (\&test)
}
depan (@utas) {
$_->gabung();
if ($err saya = $_->error()) {
die "peluncuran gagal dengan utas $nr_threads: $err"
}
}
$end_t saya = waktu();
printf("%d %.2f\n", $nr_threads, $end_t - $start_t);
}

MENGGUNAKAN MODE PENGGUNA LINUX


Sejak libguestfs 1.24, dimungkinkan untuk menggunakan backend User-Mode Linux (uml)
alih-alih KVM (lihat "USER-MODE LINUX BACKEND" di tamu(3)). Bagian ini membuat beberapa
komentar umum tentang backend ini, tapi itu sangat sebaiknya untuk mengukur Anda sendiri
beban kerja di bawah UML daripada mempercayai komentar atau intuisi.

· UML biasanya melakukan hal yang sama atau sedikit lebih lambat dari KVM, pada baremetal.

· Namun UML sering melakukan hal yang sama di bawah virtualisasi seperti pada baremetal,
sedangkan KVM dapat berjalan jauh lebih lambat di bawah virtualisasi (karena akselerasi virt perangkat keras
tidak tersedia).

· Unggah dan unduh 10 kali lebih lambat di UML daripada KVM. Libguestfs mengirim
data ini melalui port serial emulasi UML, yang jauh lebih efisien daripada KVM
serial-virtio.

· UML tidak memiliki beberapa fitur (misalnya dukungan qcow2), sehingga mungkin tidak dapat diterapkan sama sekali.

Untuk beberapa angka sebenarnya, lihat:
http://rwmj.wordpress.com/2013/08/14/performance-of-user-mode-linux-as-a-libguestfs-backend/# isi

PEMECAHAN MASALAH MISKIN KINERJA


Memastikan perangkat keras virtualisasi is tersedia
penggunaan / proc / cpuinfo dan halaman ini:

http://virt-tools.org/learning/check-hardware-virt/

untuk memastikan bahwa virtualisasi perangkat keras tersedia. Perhatikan bahwa Anda mungkin perlu mengaktifkannya
di BIOS Anda.

Perangkat keras virt biasanya tidak tersedia di dalam VM, dan libguestfs akan berjalan lambat di dalam
mesin virtual lain apa pun yang Anda lakukan. Virtualisasi bersarang tidak berfungsi dengan baik di . kami
pengalaman, dan tentu saja bukan pengganti untuk menjalankan libguestfs di baremetal.

Memastikan KVM is tersedia
Pastikan KVM diaktifkan dan tersedia untuk pengguna yang akan menjalankan libguestfs. Itu harus
aman untuk mengatur izin 0666 pada /dev/kvm dan sebagian besar distribusi sekarang melakukan ini.

Prosesor untuk menghindari
Hindari prosesor yang tidak memiliki virtualisasi perangkat keras, dan beberapa prosesor yang
sangat lambat (AMD Geode menjadi contoh yang bagus).

Xen dom0
Di Xen, dom0 adalah mesin virtual, sehingga virtualisasi perangkat keras tidak tersedia.

TERPERINCI WAKTU MENGGUNAKAN TS


Gunakan ts(1) perintah (dari moreutils) untuk menampilkan pengaturan waktu terperinci:

$ guestfish -a /dev/null run -v |& ts -i '%.s'
0.000022 libguestfs: luncurkan: program=guestfish
0.000134 libguestfs: luncurkan: versi=1.29.31fedora=23,release=2.fc23,libvirt
0.000044 libguestfs: peluncuran: backend terdaftar: unix
0.000035 libguestfs: peluncuran: backend terdaftar: uml
0.000035 libguestfs: peluncuran: backend terdaftar: libvirt
0.000032 libguestfs: peluncuran: backend terdaftar: langsung
0.000030 libguestfs: luncurkan: backend=libvirt
0.000031 libguestfs: luncurkan: tmpdir=/tmp/libguestfsw18rBQ
0.000029 libguestfs: luncurkan: umask=0002
0.000031 libguestfs: luncurkan: euid=1000
0.000030 libguestfs: versi libvirt = 1002012 (1.2.12)
[dll]

Stempel waktu adalah detik (bertambah sejak baris sebelumnya).

TERPERINCI WAKTU MENGGUNAKAN SYSTEMTA


Anda dapat menggunakan SystemTap (ketukan(1)) untuk mendapatkan pengaturan waktu terperinci dari program libguestfs.

Simpan skrip berikut sebagai waktu.stap:

global terakhir;

fungsi tampilan_waktu () {
sekarang = gettimeofday_us();
delta = 0;
jika (terakhir > 0)
delta = sekarang - terakhir;
terakhir = sekarang;

printf("%d (+%d):", sekarang, delta);
}

penyelidikan dimulai {
terakhir = 0;
printf("siap\n");
}

/* Menampilkan semua panggilan ke penanda statis. */
proses penyelidikan("/ Usr / lib*/libguestfs.so.0")
.provider("guestfs").mark("*") ? {
tampilan_waktu();
printf("\t%s %s\n", $$nama, $$parms);
}

/* Menampilkan semua panggilan ke fungsi guestfs_*. */
proses penyelidikan("/ Usr / lib*/libguestfs.so.0")
.fungsi("guestfs_[az]*") ? {
tampilan_waktu();
printf("\t%s %s\n", probefunc(), $$parms);
}

Jalankan sebagai root di satu jendela:

# waktu ketukan. ketukan
siap

Ini mencetak "siap" ketika SystemTap telah memuat program. Jalankan program libguestfs Anda,
guestfish atau alat virt di jendela lain. Sebagai contoh:

$ guestfish -a /dev/null jalankan

Di jendela ketukan Anda akan melihat sejumlah besar output, dengan waktu yang dibutuhkan untuk masing-masing
langkah yang ditunjukkan (mikrodetik dalam kurung). Sebagai contoh:

xxxx (+0): guestfs_create
xxxx (+29): guestfs_set_pgroup g=0x17a9de0 pgroup=0x1
xxxx (+9): guestfs_add_drive_opts_argv g=0x17a9de0 [...]
xxxx (+8): guestfs_int_safe_strdup g=0x17a9de0 str=0x7f8a153bed5d
xxxx (+19): guestfs_int_safe_malloc g=0x17a9de0 nbytes=0x38
xxxx (+5): guestfs_int_safe_strdup g=0x17a9de0 str=0x17a9f60
xxxx (+10): guestfs_launch g=0x17a9de0
xxxx (+4): peluncuran_mulai
[dll]

Anda perlu berkonsultasi, dan bahkan memodifikasi, sumber ke libguestfs untuk memahami sepenuhnya
hasil.

TERPERINCI DEBUGING MENGGUNAKAN GDB


Anda dapat melampirkan ke BIOS/kernel alat menggunakan gdb. Jika Anda tahu apa yang Anda lakukan,
ini bisa menjadi cara yang berguna untuk mendiagnosis regresi boot.

Pertama, Anda harus mengubah qemu agar berjalan dengan opsi "-S" dan "-s". Pilihan ini
menyebabkan qemu berhenti saat boot dan memungkinkan Anda untuk melampirkan debugger. Membaca qemu(1) untuk selanjutnya
informasi. Libguestfs memanggil qemu beberapa kali (untuk memindai keluaran bantuan dan sebagainya)
dan Anda hanya ingin pemanggilan terakhir qemu menggunakan opsi ini, jadi gunakan pembungkus qemu
skrip seperti ini:

#!/ bin / bash -

# Atur ini untuk menunjuk ke biner qemu yang sebenarnya.
qemu=/usr/bin/qemu-kvm

if [ "$1" != "-global" ]; kemudian
# Memindai keluaran bantuan, dll.
exec $qemu "$@"
lain
# Benar-benar menjalankan qemu.
exec $qemu -S -s "$@"
fi

Sekarang jalankan guestfish atau alat libguestfs lainnya dengan qemu wrapper (lihat "QEMU WRAPPERS" di
tamu(3) untuk memahami apa yang dilakukannya):

LIBGUESTFS_HV=/path/to/qemu-wrapper guestfish -a /dev/null -v jalankan

Ini harus berhenti tepat setelah qemu diluncurkan. Di jendela lain, lampirkan ke qemu menggunakan gdb:

$gdb
(gdb) mengatur arsitektur i8086
Arsitektur target diasumsikan i8086
(gdb) target jarak jauh: 1234
Debug jarak jauh menggunakan :1234
0x0000fff0 masuk ?? ()
(gdb) lanjutan

Pada titik ini Anda dapat menggunakan teknik gdb standar, mis. menekan "^C" untuk menghentikan boot
dan "bt" mendapatkan jejak tumpukan, menyetel breakpoint, dll. Perhatikan bahwa ketika Anda melewati
BIOS dan ke kernel Linux, Anda ingin mengubah arsitektur kembali ke 32 atau 64
sedikit.

Gunakan kinerja guestfs secara online menggunakan layanan onworks.net


Server & Workstation Gratis

Unduh aplikasi Windows & Linux

  • 1
    facetracknoir
    facetracknoir
    Program pelacakan kepala modular itu
    mendukung banyak pelacak wajah, filter
    dan protokol permainan. Di antara pelacak
    adalah SM FaceAPI, AIC Inertial Head
    Pelacak...
    Unduh facetracknoir.dll
  • 2
    Kode QR PHP
    Kode QR PHP
    Kode QR PHP adalah sumber terbuka (LGPL)
    perpustakaan untuk menghasilkan Kode QR,
    kode batang 2 dimensi. Berdasarkan
    libqrencode C library, menyediakan API untuk
    membuat batang Kode QR...
    Unduh Kode QR PHP
  • 3
    freeciv
    freeciv
    Freeciv adalah turn-based gratis
    game strategi multipemain, di mana masing-masing
    pemain menjadi pemimpin a
    peradaban, berjuang untuk mendapatkan
    tujuan akhir: menjadi...
    Unduh Freeciv.dll
  • 4
    Kotak Pasir Cuckoo
    Kotak Pasir Cuckoo
    Cuckoo Sandbox menggunakan komponen untuk
    memantau perilaku malware di a
    Lingkungan kotak pasir; diisolasi dari
    sisa sistem. Ini menawarkan otomatis
    analisis...
    Unduh Kotak Pasir Cuckoo
  • 5
    LMS-YouTube
    LMS-YouTube
    Putar video YouTube di LMS (porting dari
    Triode's to YouTbe API v3) Ini
    aplikasi yang juga dapat diambil
    dari
    https://sourceforge.net/projects/lms-y...
    Unduh LMS-YouTube
  • 6
    Yayasan Presentasi Windows
    Yayasan Presentasi Windows
    Yayasan Presentasi Windows (WPF)
    adalah kerangka kerja UI untuk membangun Windows
    aplikasi desktop. WPF mendukung
    set luas pengembangan aplikasi
    fitur...
    Unduh Windows Presentation Foundation
  • Lebih banyak lagi »

Perintah Linux

Ad