ພາສາອັງກິດພາສາຝຣັ່ງແອສປາໂຍນ

Ad


OnWorks favicon

guestfs-performance - ອອນລາຍໃນຄລາວ

ດໍາເນີນການ guestfs-performance ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີຜ່ານ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ນີ້ແມ່ນຄໍາສັ່ງ guestfs-performance ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ໂຄງການ:

NAME


guestfs-performance - engineering libguestfs ສໍາລັບການປະຕິບັດທີ່ຍິ່ງໃຫຍ່ທີ່ສຸດ

ລາຍລະອຽດ


ຫນ້ານີ້ເອກະສານວິທີການທີ່ຈະໄດ້ຮັບການປະຕິບັດທີ່ຍິ່ງໃຫຍ່ທີ່ສຸດຂອງ libguestfs, ໂດຍສະເພາະໃນເວລາທີ່
ທ່ານຄາດວ່າຈະໃຊ້ libguestfs ເພື່ອຈັດການເຄື່ອງ virtual ຫຼືຮູບດິສກ໌ຫຼາຍພັນເຄື່ອງ.

ສາມພື້ນທີ່ຕົ້ນຕໍແມ່ນກວມເອົາ. Libguestfs ແລ່ນເຄື່ອງໃຊ້ (ການແຈກຢາຍ Linux ຂະໜາດນ້ອຍ)
ພາຍໃນ qemu/KVM. ສອງ​ຂົງ​ເຂດ​ທໍາ​ອິດ​ແມ່ນ​: ການ​ຫຼຸດ​ຜ່ອນ​ທີ່​ໃຊ້​ເວ​ລາ​ທີ່​ໃຊ້​ເວ​ລາ​ເພື່ອ​ເລີ່ມ​ຕົ້ນ​ການ​ນີ້​
ເຄື່ອງໃຊ້, ແລະຈໍານວນເວລາທີ່ເຄື່ອງໃຊ້ຕ້ອງໄດ້ເລີ່ມຕົ້ນ. ພື້ນທີ່ທີສາມແມ່ນ
ຫຼຸດຜ່ອນເວລາໃນການກວດກາ VMs.

ພື້ນຖານ ມາດຕະຖານ


ກ່ອນທີ່ຈະປ່ຽນແປງວິທີທີ່ທ່ານໃຊ້ libguestfs, ໃຊ້ການວັດແທກພື້ນຖານ.

ພື້ນຖານ: ເລີ່ມຕົ້ນ ໄດ້ ເຄື່ອງໃຊ້ໄຟຟ້າ
ໃນເຄື່ອງທີ່ບໍ່ໄດ້ໂຫຼດ, ມັນໃຊ້ເວລາດົນປານໃດເພື່ອເລີ່ມຕົ້ນເຄື່ອງໃຊ້:

time guestfish -a /dev/null run

ດໍາເນີນການຄໍາສັ່ງນີ້ຫຼາຍຄັ້ງຕິດຕໍ່ກັນແລະຍົກເລີກການແລ່ນສອງສາມຄັ້ງທໍາອິດ, ດັ່ງນັ້ນທ່ານ
ການວັດແທກກໍລະນີ "hot cache" ປົກກະຕິ.

ຄໍາອະທິບາຍ

ຄຳສັ່ງນີ້ເລີ່ມເຄື່ອງໃຊ້ libguestfs ຢູ່ໃນແຜ່ນ null, ແລະຫຼັງຈາກນັ້ນປິດທັນທີ
ມັນລົງ. ຄັ້ງທໍາອິດທີ່ທ່ານດໍາເນີນການຄໍາສັ່ງ, ມັນຈະສ້າງອຸປະກອນແລະ cache ມັນ
(ປົກກະຕິແລ້ວພາຍໃຕ້ /var/tmp/.guestfs-*). ການແລ່ນຄັ້ງຕໍ່ໄປຄວນໃຊ້ອຸປະກອນທີ່ເກັບໄວ້ໃນບ່ອນເກັບຂໍ້ມູນຄືນໃໝ່.

ຄາດຫວັງວ່າ ຜົນການຄົ້ນຫາ

ທ່ານຄວນຄາດຫວັງວ່າຈະໄດ້ຮັບເວລາຫນ້ອຍກວ່າ 6 ວິນາທີ. ຖ້າເວລາທີ່ທ່ານເຫັນຢູ່ໃນ
ເຄື່ອງ unloaded ແມ່ນຂ້າງເທິງນີ້, ຫຼັງຈາກນັ້ນເບິ່ງພາກ "ການແກ້ໄຂບັນຫາການປະຕິບັດທີ່ບໍ່ດີ"
ຂ້າງລຸ່ມນີ້.

ພື້ນຖານ: ການປະຕິບັດ ການກວດກາ of a ບຸກຄົນທົ່ວໄປ
ສໍາລັບການທົດສອບນີ້, ທ່ານຈະຕ້ອງການເຄື່ອງ unloaded ແລະຢ່າງຫນ້ອຍຫນຶ່ງແຂກທີ່ແທ້ຈິງຫຼືຮູບພາບແຜ່ນ.
ຖ້າທ່ານກໍາລັງວາງແຜນທີ່ຈະໃຊ້ libguestfs ຕໍ່ກັບແຂກ X ເທົ່ານັ້ນ (ຕົວຢ່າງ. X = Windows), ຫຼັງຈາກນັ້ນໃຊ້
ແຂກ X ຢູ່ທີ່ນີ້ຈະເຫມາະສົມທີ່ສຸດ. ຖ້າທ່ານກໍາລັງວາງແຜນທີ່ຈະດໍາເນີນການ libguestfs ຕໍ່
ການປະສົມຂອງແຂກ, ຫຼັງຈາກນັ້ນໃຊ້ການປະສົມຂອງແຂກສໍາລັບການທົດສອບຢູ່ທີ່ນີ້.

ໃຊ້ເວລາດົນປານໃດເພື່ອດໍາເນີນການກວດກາ ແລະຕິດແຜ່ນຂອງແຂກ. ໃຊ້
ຄໍາສັ່ງທໍາອິດຖ້າຫາກວ່າທ່ານຈະຖືກນໍາໃຊ້ຮູບພາບແຜ່ນ, ແລະຄໍາສັ່ງທີສອງຖ້າຫາກວ່າທ່ານຈະເປັນ
ໃຊ້ libvirt.

time guestfish --ro -a disk.img -i ອອກ

time guestfish --ro -d GuestName -i ອອກ

ດໍາເນີນການຄໍາສັ່ງຫຼາຍຄັ້ງຕິດຕໍ່ກັນແລະຍົກເລີກການແລ່ນສອງສາມຄັ້ງທໍາອິດ, ດັ່ງນັ້ນທ່ານ
ການວັດແທກກໍລະນີ "hot cache" ປົກກະຕິ.

ຄໍາອະທິບາຍ

ຄໍາສັ່ງນີ້ເລີ່ມຕົ້ນອຸປະກອນ libguestfs ຢູ່ໃນຮູບພາບແຜ່ນທີ່ມີຊື່ຫຼືແຂກ libvirt,
ດໍາເນີນການກວດກາ libguestfs ກ່ຽວກັບມັນ (ເບິ່ງ "INSPECTION" ໃນ ແຂກ(3)), mounts ຂອງແຂກ
ແຜ່ນ, ຫຼັງຈາກນັ້ນຍົກເລີກຜົນໄດ້ຮັບທັງຫມົດເຫຼົ່ານີ້ແລະປິດລົງ.

ຄັ້ງທໍາອິດທີ່ທ່ານດໍາເນີນການຄໍາສັ່ງ, ມັນຈະສ້າງອຸປະກອນແລະ cache ມັນ (ປົກກະຕິແລ້ວ
ພາຍໃຕ້ການ /var/tmp/.guestfs-*). ການແລ່ນຄັ້ງຕໍ່ໄປຄວນໃຊ້ອຸປະກອນທີ່ເກັບໄວ້ໃນບ່ອນເກັບຂໍ້ມູນຄືນໃໝ່.

ຄາດຫວັງວ່າ ຜົນການຄົ້ນຫາ

ທ່ານຄວນຄາດຫວັງເວລາທີ່ມີ ≤ 5 ວິນາທີຫຼາຍກວ່າການວັດແທກຢູ່ໃນເສັ້ນພື້ນຖານທໍາອິດ
ການທົດສອບຂ້າງເທິງ. (ຕົວຢ່າງ, ຖ້າການທົດສອບພື້ນຖານຄັ້ງທໍາອິດແລ່ນໃນ 5 ວິນາທີ, ຫຼັງຈາກນັ້ນການທົດສອບນີ້
ຄວນແລ່ນໃນ ≤ 10 ວິນາທີ).

ຄວາມເຂົ້າໃຈ ການ ປະຕິບັດ ແລະ ເມື່ອ​ໃດ​ IT IS BUILT/CACHED


ຄັ້ງທໍາອິດທີ່ທ່ານໃຊ້ libguestfs, ມັນຈະສ້າງແລະ cache ເຄື່ອງໃຊ້. ນີ້ແມ່ນປົກກະຕິແລ້ວ
in /var/tmp/.guestfs-*, ເວັ້ນເສຍແຕ່ວ່າທ່ານໄດ້ຕັ້ງ $TMPDIR ຫຼື $LIBGUESTFS_CACHEDIR ໃນກໍລະນີໃດ
ມັນຈະຢູ່ພາຍໃຕ້ບັນຊີຊົ່ວຄາວນັ້ນ.

ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບວິທີການກໍ່ສ້າງອຸປະກອນ, ເບິ່ງ "SUPERMIN APPLIANCES" ໃນ
ຊຸບເປີມິນ(1).

ທຸກໆຄັ້ງທີ່ libguestfs ແລ່ນມັນຈະກວດເບິ່ງວ່າບໍ່ມີໄຟລ໌ໂຮດທີ່ໃຊ້ໂດຍເຄື່ອງໃຊ້
ປ່ຽນແປງ. ຖ້າມີ, ຫຼັງຈາກນັ້ນເຄື່ອງໃຊ້ໄດ້ຖືກສ້າງໃຫມ່. ນີ້ມັກຈະເກີດຂຶ້ນໃນເວລາທີ່ຊຸດ
ໄດ້ຖືກຕິດຕັ້ງຫຼືປັບປຸງຢູ່ໃນໂຮດ (ເຊັ່ນ: ການນໍາໃຊ້ໂຄງການເຊັ່ນ "yum" ຫຼື "apt-get"). ໄດ້
ເຫດຜົນສໍາລັບການ reconstructing ເຄື່ອງໃຊ້ແມ່ນຄວາມປອດໄພ: ໂຄງການໃຫມ່ທີ່ໄດ້
ການ​ຕິດ​ຕັ້ງ​ອາດ​ຈະ​ມີ​ການ​ແກ້​ໄຂ​ຄວາມ​ປອດ​ໄພ​, ແລະ​ດັ່ງ​ນັ້ນ​ພວກ​ເຮົາ​ຕ້ອງ​ການ​ທີ່​ຈະ​ລວມ​ເອົາ​ໂຄງ​ການ​ຄົງ​ທີ່​ໃນ​
ເຄື່ອງ​ໃຊ້​ອັດ​ຕະ​ໂນ​ມັດ​.

ນີ້ແມ່ນຜົນສະທ້ອນຂອງການປະຕິບັດ:

· ຂະ​ບວນ​ການ​ຂອງ​ການ​ກໍ່​ສ້າງ (ຫຼື​ການ​ສ້າງ​ໃຫມ່​) ເຄື່ອງ​ໃຊ້​ໃນ​ຖານ​ຄວາມ​ຈໍາ​ແມ່ນ​ຊ້າ​, ແລະ​ທ່ານ​ສາ​ມາດ​ເຮັດ​ໄດ້​
ຫຼີກເວັ້ນການນີ້ເກີດຂຶ້ນໂດຍການນໍາໃຊ້ອຸປະກອນຄົງທີ່ (ເບິ່ງຂ້າງລຸ່ມນີ້).

· ຖ້າ​ຫາກ​ວ່າ​ບໍ່​ໄດ້​ນໍາ​ໃຊ້​ອຸ​ປະ​ກອນ​ຄົງ​ທີ່​, ຮັບ​ຮູ້​ວ່າ​ການ​ປັບ​ປຸງ​ຊອບ​ແວ​ກ່ຽວ​ກັບ​ແມ່​ຂ່າຍ​ຈະ​ເຮັດ​ໃຫ້​ເກີດ​
ການກໍ່ສ້າງເຄື່ອງໃຊ້ໃນຄັ້ງດຽວ.

· / var / tmp (ຫຼື $TMPDIR, $LIBGUESTFS_CACHEDIR) ຄວນຈະຢູ່ໃນຈານດ່ວນ, ແລະມີຫຼາຍຢ່າງ.
ພື້ນທີ່ສໍາລັບເຄື່ອງໃຊ້.

ການ ນຳ ໃຊ້ A FIXED ປະຕິບັດ


ເພື່ອຄວບຄຸມຢ່າງສົມບູນເມື່ອເຄື່ອງໃຊ້ໄດ້ຖືກສ້າງ, ທ່ານສາມາດສ້າງເຄື່ອງໃຊ້ຄົງທີ່. ນີ້
ເຄື່ອງໃຊ້ຄວນຖືກເກັບໄວ້ໃນແຜ່ນທີ່ໄວ.

ເພື່ອສ້າງອຸປະກອນ, ດໍາເນີນການຄໍາສັ່ງ:

libguestfs-make-fixed-appliance

ແທນ " " ດ້ວຍຊື່ຂອງໄດເລກະທໍລີທີ່ເຄື່ອງໃຊ້ຈະຖືກເກັບໄວ້
(ປົກກະຕິທ່ານຈະຕັ້ງຊື່ຍ່ອຍຍ່ອຍ, ຕົວຢ່າງ: /usr/local/lib/guestfs/appliance or
/dev/shm/ເຄື່ອງໃຊ້).

ຈາກນັ້ນຕັ້ງ $LIBGUESTFS_PATH (ແລະໃຫ້ແນ່ໃຈວ່າຕົວແປສະພາບແວດລ້ອມນີ້ຖືກຕັ້ງໄວ້ໃນ libguestfs ຂອງທ່ານ.
program), ຫຼືດັດແປງໂຄງການຂອງທ່ານເພື່ອໃຫ້ມັນເອີ້ນວ່າ "guestfs_set_path". ຍົກ​ຕົວ​ຢ່າງ:

ສົ່ງອອກ LIBGUESTFS_PATH=/usr/local/lib/guestfs/appliance

ໃນປັດຈຸບັນທ່ານສາມາດດໍາເນີນໂຄງການ libguestfs, ເຄື່ອງມື virt, guestfish ແລະອື່ນໆຕາມປົກກະຕິ. ບັນດາໂຄງການ
ຈະໃຊ້ເຄື່ອງໃຊ້ຄົງທີ່ຂອງເຈົ້າ, ແລະຈະບໍ່ສ້າງ, ສ້າງໃຫມ່, ຫຼື cache ຂອງຕົນເອງ
ເຄື່ອງໃຊ້ໄຟຟ້າ.

(ສໍາລັບລາຍລະອຽດກ່ຽວກັບເລື່ອງນີ້, ເບິ່ງ: libguestfs-make-fixed-appliance(1)).

ການປະຕິບັດ of ໄດ້ ຄົງ ເຄື່ອງໃຊ້ໄຟຟ້າ
ໃນ​ການ​ທົດ​ສອບ​ຂອງ​ພວກ​ເຮົາ​ພວກ​ເຮົາ​ບໍ່​ໄດ້​ພົບ​ເຫັນ​ວ່າ​ການ​ນໍາ​ໃຊ້​ອຸ​ປະ​ກອນ​ຄົງ​ທີ່​ໃຫ້​ການ​ວັດ​ແທກ​ໃດ​ຫນຶ່ງ​
ຜົນປະໂຫຍດປະສິດທິພາບ, ເຖິງແມ່ນວ່າໃນເວລາທີ່ອຸປະກອນຢູ່ໃນຫນ່ວຍຄວາມຈໍາ (ie. on /dev/shm).
ຢ່າງໃດກໍຕາມ, ມີສອງຈຸດທີ່ຈະພິຈາລະນາ:

1. ການນໍາໃຊ້ເຄື່ອງໃຊ້ຄົງທີ່ຢຸດ libguestfs ຈາກການສ້າງເຄື່ອງໃຊ້ຄືນໃຫມ່, ຊຶ່ງຫມາຍຄວາມວ່າ
ວ່າ libguestfs ຈະມີເວລາເລີ່ມຕົ້ນທີ່ຄາດເດົາໄດ້ຫຼາຍຂຶ້ນ.

2. ເຄື່ອງໃຊ້ໄດ້ຖືກໂຫຼດຕາມຄວາມຕ້ອງການ. ການ​ທົດ​ສອບ​ງ່າຍ​ດາຍ​ເຊັ່ນ​:

time guestfish -a /dev/null run

ບໍ່ໄດ້ໂຫຼດອຸປະກອນຫຼາຍ. ໂຄງການ libguestfs ທີ່ແທ້ຈິງໂດຍໃຊ້ຄວາມສັບສົນ
ການໂທ API ຈະຮຽກຮ້ອງໃຫ້ມີການໂຫຼດອຸປະກອນຫຼາຍ. ຄວາມສາມາດໃນການເກັບຮັກສາ
ເຄື່ອງໃຊ້ໃນສະຖານທີ່ທີ່ລະບຸໄວ້ເຮັດໃຫ້ປະສິດທິພາບສາມາດຄາດເດົາໄດ້ຫຼາຍຂຶ້ນ.

ການຫຼຸດຜ່ອນ ການ NUMBER OF TIMES ການ ປະຕິບັດ IS ເປີດຕົວ


ມາຮອດປະຈຸ, ປະສິດທິຜົນທີ່ສຸດ, ເຖິງແມ່ນວ່າບໍ່ແມ່ນວິທີງ່າຍດາຍທີ່ສຸດເພື່ອໃຫ້ໄດ້ຜົນດີ
ເພື່ອຮັບປະກັນວ່າເຄື່ອງໃຊ້ໄດ້ຖືກເປີດຢູ່ໃນຈໍານວນເວລາຕໍາ່ສຸດທີ່. ນີ້ອາດຈະເປັນ
ມີສ່ວນຮ່ວມໃນການປ່ຽນແປງຄໍາຮ້ອງສະຫມັກ libguestfs ຂອງທ່ານ.

ພະຍາຍາມໂທຫາ "guestfs_launch" ຫຼາຍທີ່ສຸດຫນຶ່ງຄັ້ງຕໍ່ເຄື່ອງ virtual ເປົ້າຫມາຍຫຼືຮູບພາບແຜ່ນ.

ແທນທີ່ຈະໃຊ້ຕົວຢ່າງແຍກຕ່າງຫາກຂອງ ປາແຂກ(1​) ເພື່ອ​ເຮັດ​ໃຫ້​ຊຸດ​ຂອງ​ການ​ປ່ຽນ​ແປງ​ຂອງ​
ແຂກຄົນດຽວກັນ, ໃຊ້ປາຕົວດຽວຂອງ guestfish ແລະ/ຫຼືໃຊ້ guestfish --ຟັງ ທາງເລືອກ.

ພິຈາລະນາການຂຽນໂປຼແກຼມຂອງເຈົ້າເປັນ daemon ທີ່ເປີດແຂກໃນຂະນະທີ່ສ້າງຊຸດ
ຂອງ​ການ​ປ່ຽນ​ແປງ​. ຫຼື marshal ການດໍາເນີນງານທັງຫມົດທີ່ທ່ານຕ້ອງການທີ່ຈະປະຕິບັດກ່ອນທີ່ຈະເປີດບຸກຄົນທົ່ວໄປ.

ນອກນັ້ນທ່ານຍັງສາມາດລອງເພີ່ມແຜ່ນຈາກແຂກຫຼາຍໆຄົນໃສ່ເຄື່ອງດຽວ. ກ່ອນທີ່ຈະພະຍາຍາມ
ນີ້, ໃຫ້ສັງເກດຈຸດດັ່ງຕໍ່ໄປນີ້:

1. ການເພີ່ມແຂກຫຼາຍໆຄົນໃສ່ເຄື່ອງໜຶ່ງແມ່ນເປັນບັນຫາດ້ານຄວາມປອດໄພ ເພາະມັນອາດຈະເຮັດໃຫ້ຄົນດຽວໄດ້
ແຂກທີ່ຈະແຊກແຊງແຜ່ນຂອງແຂກອື່ນ. ພຽງແຕ່ເຮັດມັນຖ້າທ່ານໄວ້ວາງໃຈທັງຫມົດ
ແຂກ, ຫຼືຖ້າທ່ານສາມາດຈັດກຸ່ມແຂກໂດຍຄວາມໄວ້ວາງໃຈ.

2. ມີຂໍ້ຈໍາກັດທີ່ຍາກຕໍ່ກັບຈໍານວນແຜ່ນທີ່ທ່ານສາມາດເພີ່ມໃສ່ເຄື່ອງດຽວ. ໂທ
"guestfs_max_disks" ໃນ ແຂກ(3) ເພື່ອໃຫ້ໄດ້ຮັບຂອບເຂດຈໍາກັດນີ້. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມເບິ່ງ
"LIMITS" ໃນ ແຂກ(3).

3. ການນໍາໃຊ້ libguestfs ວິທີການນີ້ແມ່ນສັບສົນ. ແຜ່ນສາມາດມີການໂຕ້ຕອບທີ່ບໍ່ຄາດຄິດ: ສໍາລັບ
ຕົວຢ່າງ, ຖ້າແຂກສອງຄົນໃຊ້ UUID ດຽວກັນສໍາລັບລະບົບໄຟລ໌ (ເພາະວ່າພວກເຂົາຖືກໂຄນ),
ຫຼືມີກຸ່ມປະລິມານທີ່ມີຊື່ດຽວກັນ (ແຕ່ເບິ່ງ "guestfs_lvm_set_filter").

virt-df(1) ເພີ່ມຫຼາຍແຜ່ນໂດຍຄ່າເລີ່ມຕົ້ນ, ດັ່ງນັ້ນລະຫັດແຫຼ່ງສໍາລັບໂຄງການນີ້ຈະເປັນ a
ສະຖານທີ່ທີ່ດີທີ່ຈະເລີ່ມຕົ້ນ.

ຫຍໍ້ ການ ເວລາ ເອົາ FOR ການກວດສອບ OF VMs


ຄໍາແນະນໍາຕົ້ນຕໍແມ່ນຈະແຈ້ງ: ຢ່າດໍາເນີນການກວດກາ (ເຊິ່ງມີລາຄາແພງ) ເວັ້ນເສຍແຕ່ວ່າທ່ານຕ້ອງການ
ຜົນ​ໄດ້​ຮັບ.

ຖ້າ​ຫາກ​ວ່າ​ທ່ານ​ໃນ​ເມື່ອ​ກ່ອນ​ໄດ້​ປະ​ຕິ​ບັດ​ການ​ກວດ​ກາ​ກ່ຽວ​ກັບ​ບຸກ​ຄົນ​ທົ່ວ​ໄປ​, ຫຼັງ​ຈາກ​ນັ້ນ​ມັນ​ອາດ​ຈະ​ມີ​ຄວາມ​ປອດ​ໄພ​ທີ່​ຈະ cache ແລະ​
ໃຊ້ຄືນຜົນໄດ້ຮັບຈາກຄັ້ງທີ່ຜ່ານມາ.

ບາງແຜ່ນບໍ່ຈໍາເປັນຕ້ອງຖືກກວດກາທັງຫມົດ: ຕົວຢ່າງ, ຖ້າທ່ານກໍາລັງສ້າງແຜ່ນ
ຮູບ​ພາບ​, ຫຼື​ຖ້າ​ຫາກ​ວ່າ​ຮູບ​ພາບ​ແຜ່ນ​ບໍ່​ແມ່ນ VM​, ຫຼື​ຖ້າ​ຫາກ​ວ່າ​ຮູບ​ພາບ​ແຜ່ນ​ມີ​ຮູບ​ແບບ​ທີ່​ຮູ້​ຈັກ​.

ເຖິງແມ່ນວ່າໃນເວລາທີ່ການກວດສອບພື້ນຖານ ("guestfs_inspect_os") ແມ່ນຈໍາເປັນ, ການກວດກາຊ່ວຍ.
ການດໍາເນີນງານອາດຈະຖືກຫຼີກລ່ຽງ:

· ການ​ຕິດ​ຕັ້ງ​ແຜ່ນ​ແມ່ນ​ພຽງ​ແຕ່​ມີ​ຄວາມ​ຈໍາ​ເປັນ​ເພື່ອ​ໃຫ້​ໄດ້​ຮັບ​ຂໍ້​ມູນ​ລະ​ບົບ​ໄຟລ​໌​ເພີ່ມ​ເຕີມ​.

· ລາຍຊື່ແອັບພລິເຄຊັນ ("guestfs_inspect_list_applications") ແມ່ນການດໍາເນີນງານລາຄາແພງ
ໃນ Linux, ແຕ່ເກືອບບໍ່ເສຍຄ່າໃນ Windows.

· ການສ້າງໄອຄອນແຂກ ("guestfs_inspect_get_icon") ແມ່ນລາຄາຖືກໃນ Linux ແຕ່ລາຄາແພງ.
ໃນ Windows.

ພາຣາກອດ ການສະ ໝັກ


ເຄື່ອງໃຊ້ Libguestfs ສ່ວນຫຼາຍແມ່ນ I/O ຜູກມັດແລະທ່ານສາມາດເປີດເຄື່ອງໃຊ້ຫຼາຍໃນ
ຂະໜານ. ໂດຍ​ສະ​ຫນອງ​ໃຫ້​ມີ​ຄວາມ​ຊົງ​ຈໍາ​ຟຣີ​ພຽງ​ພໍ​, ມັນ​ຄວນ​ຈະ​ມີ​ຄວາມ​ແຕກ​ຕ່າງ​ກັນ​ພຽງ​ເລັກ​ນ້ອຍ​
ການເປີດຕົວ 1 ເຄື່ອງທຽບກັບ N ເຄື່ອງໃຊ້ໃນຂະຫນານ.

ໃນຄອມພິວເຕີໂນດບຸກ 2-core (4-thread) ທີ່ມີ RAM 16 GB, ໂດຍໃຊ້ການທົດສອບ (ບໍ່ແມ່ນຄວາມຈິງໂດຍສະເພາະ)
Perl script ຂ້າງລຸ່ມນີ້, ດິນຕອນຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນການຂະຫຍາຍທີ່ດີເລີດໃນເວລາທີ່ແລ່ນລະຫວ່າງ 1
ແລະ 20 ເຄື່ອງໃຊ້ໃນຂະຫນານ:

12 ++---+----+----+----+-----+----+----+----+----+-- -++
+ + + + + + + + + + + + *
| |
| * |
11 ++ ++
| |
| |
| * * |
10 ++ ++
| * |
| |
s | |
9 ++ ++
e | |
| * |
ຄ | |
8++*++
o | * |
| |
n 7 ++
| * |
d | * |
| |
s 6++ ++
| * * |
| * |
| |
5 ++ ++
| |
| * |
| * * |
4 ++ ++
| |
| |
+ * * * + + + + + + + + + + +
3 ++-*-+----+----+----+-----+----+----+----+----+-- -++
0 2 4 6 8 10 12 14 16 18 20
ຈໍານວນຂອງເຄື່ອງໃຊ້ຂະຫນານ

ມັນເປັນໄປໄດ້ທີ່ຈະດໍາເນີນການຫຼາຍກ່ວາ 20 ເຄື່ອງໃຊ້ໃນຂະຫນານ, ແຕ່ຖ້າຫາກວ່າທ່ານກໍາລັງໃຊ້
libvirt backend ຫຼັງຈາກນັ້ນທ່ານຄວນຮູ້ວ່າອອກຈາກກ່ອງ libvirt ຈໍາກັດຈໍານວນຂອງ
ການ​ເຊື່ອມ​ຕໍ່​ລູກ​ຄ້າ​ກັບ 20​.

ສະຄິບ Perl ງ່າຍດາຍຂ້າງລຸ່ມນີ້ຖືກນໍາໃຊ້ເພື່ອເກັບກໍາຂໍ້ມູນສໍາລັບດິນຕອນຂ້າງເທິງ, ແຕ່ວ່າມີ
ຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບເລື່ອງນີ້, ລວມທັງສະຄິບແລະກາຟການທົດສອບແບບພິເສດ,
ມີຢູ່ໃນບົດຄວາມ blog ຕໍ່ໄປນີ້:

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

ໃຊ້ຢ່າງເຄັ່ງຄັດ;
ໃຊ້ກະທູ້;
ການນໍາໃຊ້ຄໍາເຕືອນ;
ໃຊ້ Sys::Guestfs;
ໃຊ້ເວລາ::HiRes qw(ເວລາ);

ການທົດສອບຍ່ອຍ {
ຂອງຂ້ອຍ $g = Sys::Guestfs->ໃໝ່;
$g->add_drive_ro ("/dev/null");
$g->ເປີດຕົວ ();

# ທ່ານສາມາດເພີ່ມບາງວຽກສໍາລັບ libguestfs ທີ່ຈະເຮັດທີ່ນີ້.

$g->ປິດ ();
}

# ເອົາທຸກສິ່ງທຸກຢ່າງເຂົ້າໄປໃນ cache.
ທົດສອບ (); ທົດສອບ (); ທົດສອບ ();

ສໍາລັບ $nr_threads ຂອງຂ້ອຍ (1..20) {
ຂອງຂ້ອຍ $start_t = ເວລາ ();
@ ກະທູ້ຂອງຂ້ອຍ;
foreach (1..$nr_threads) {
push @threads, threads->ສ້າງ (\&test)
}
foreach (@threads) {
$_->ເຂົ້າຮ່ວມ ();
ຖ້າ ($err ຂອງຂ້ອຍ = $_->error ()) {
die "ການເປີດຕົວລົ້ມເຫລວກັບຫົວຂໍ້ $nr_threads: $err"
}
}
ຂອງຂ້ອຍ $end_t = ເວລາ ();
printf("%d %.2f\n", $nr_threads, $end_t - $start_t);
}

ການ ນຳ ໃຊ້ USER-MODE LINUX


ນັບຕັ້ງແຕ່ libguestfs 1.24, ມັນເປັນໄປໄດ້ທີ່ຈະໃຊ້ User-Mode Linux (uml) backend
ແທນ KVM (ເບິ່ງ "USER-MODE LINUX BACKEND" ໃນ ແຂກ(3)). ພາກນີ້ເຮັດໃຫ້ບາງ
ຂໍ້ສັງເກດທົ່ວໄປກ່ຽວກັບ backend ນີ້, ແຕ່ວ່າມັນແມ່ນ ສູງ ສົມຄວນ ການ​ວັດ​ແທກ​ຂອງ​ທ່ານ​ເອງ​
ວຽກງານພາຍໃຕ້ UML ແທນທີ່ຈະເຊື່ອຄໍາເຫັນຫຼື intuition.

· UML ປົກກະຕິແລ້ວປະຕິບັດດຽວກັນຫຼືຊ້າກວ່າ KVM ເລັກນ້ອຍ, ໃນ baremetal.

·ຢ່າງໃດກໍ່ຕາມ UML ມັກຈະປະຕິບັດດຽວກັນພາຍໃຕ້ virtualization ຍ້ອນວ່າມັນເຮັດໃນ baremetal,
ໃນຂະນະທີ່ KVM ສາມາດແລ່ນຊ້າລົງຫຼາຍພາຍໃຕ້ virtualization (ນັບຕັ້ງແຕ່ການເລັ່ງຮາດແວ virt
ບໍ່ສາມາດໃຊ້ໄດ້).

· ອັບ​ໂຫຼດ​ແລະ​ດາວ​ໂຫຼດ​ແມ່ນ​ຫຼາຍ​ເທົ່າ​ທີ່​ເປັນ 10 ເວ​ລາ​ຊ້າ​ໃນ UML ກ​່​ວາ KVM​. Libguestfs ສົ່ງ
ຂໍ້ມູນນີ້ຜ່ານພອດ serial emulated UML, ເຊິ່ງມີປະສິດທິພາບຫນ້ອຍກວ່າ KVM ຂອງ.
virtio-serial.

· UML ຂາດຄຸນສົມບັດບາງຢ່າງ (ເຊັ່ນ: qcow2 ສະຫນັບສະຫນູນ), ດັ່ງນັ້ນມັນອາດຈະບໍ່ສາມາດໃຊ້ໄດ້ທັງຫມົດ.

ສໍາລັບຕົວເລກຕົວຈິງບາງອັນ, ເບິ່ງ:
http://rwmj.wordpress.com/2013/08/14/performance-of-user-mode-linux-as-a-libguestfs-backend/# ເນື້ອຫາ

TROUBLESHOOTING ຈຸດປະສົງ ຜົນປະໂຫຍດ


ຮັບປະກັນ ຮາດແວ virtualization is ມີ
ການນໍາໃຊ້ / proc / cpuinfo ແລະໜ້ານີ້:

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

ເພື່ອຮັບປະກັນວ່າຮາດແວ virtualization ສາມາດໃຊ້ໄດ້. ໃຫ້ສັງເກດວ່າທ່ານອາດຈະຈໍາເປັນຕ້ອງໄດ້ເປີດໃຊ້ມັນ
ໃນ BIOS ຂອງທ່ານ.

ຮາດແວ virt ມັກຈະບໍ່ມີຢູ່ໃນ VMs, ແລະ libguestfs ຈະເຮັດວຽກຊ້າໆພາຍໃນ
ເຄື່ອງ virtual ອື່ນໃດກໍ່ຕາມທີ່ທ່ານເຮັດ. Nested virtualization ບໍ່ເຮັດວຽກໄດ້ດີໃນຂອງພວກເຮົາ
ປະສົບການ, ແລະແນ່ນອນວ່າບໍ່ມີການທົດແທນສໍາລັບການແລ່ນ libguestfs ໃນ baremetal.

ຮັບປະກັນ KVM is ມີ
ໃຫ້ແນ່ໃຈວ່າ KVM ຖືກເປີດໃຊ້ງານ ແລະສາມາດໃຊ້ໄດ້ກັບຜູ້ໃຊ້ທີ່ຈະດໍາເນີນການ libguestfs. ມັນ​ຄວນ
ປອດໄພໃນການຕັ້ງຄ່າການອະນຸຍາດ 0666 /dev/kvm ແລະການແຈກຢາຍສ່ວນໃຫຍ່ໃນປັດຈຸບັນເຮັດສິ່ງນີ້.

ໂຮງງານຜະລິດ to ຫລີກລ້ຽງ
ຫຼີກເວັ້ນໂປເຊດເຊີທີ່ບໍ່ມີຮາດແວ virtualization, ແລະບາງໂປເຊດເຊີທີ່ມີ
ພຽງແຕ່ຊ້າຫຼາຍ (AMD Geode ເປັນຕົວຢ່າງທີ່ດີ).

ເຊນ dom0
ໃນ Xen, dom0 ແມ່ນເຄື່ອງ virtual, ແລະດັ່ງນັ້ນ hardware virtualization ແມ່ນບໍ່ສາມາດໃຊ້ໄດ້.

ລາຍລະອຽດ ເວລາ ການ ນຳ ໃຊ້ TS


ການນໍາໃຊ້ ts(1​) ຄໍາ​ສັ່ງ (ຈາກ moreutils​) ເພື່ອ​ສະ​ແດງ​ໃຫ້​ເຫັນ​ເວ​ລາ​ລະ​ອຽດ​:

$ guestfish -a /dev/null run -v |& ts -i '%.s'
0.000022 libguestfs: launch: program=guestfish
0.000134 libguestfs: ເປີດຕົວ: version=1.29.31fedora=23,release=2.fc23,libvirt
0.000044 libguestfs: launch: backend ລົງທະບຽນ: unix
0.000035 libguestfs: ເປີດຕົວ: backend ລົງທະບຽນ: uml
0.000035 libguestfs: launch: backend ລົງທະບຽນ: libvirt
0.000032 libguestfs: ເປີດຕົວ: backend ລົງທະບຽນ: ໂດຍກົງ
0.000030 libguestfs: launch: backend=libvirt
0.000031 libguestfs: ເປີດຕົວ: tmpdir=/tmp/libguestfsw18rBQ
0.000029 libguestfs: ເປີດຕົວ: umask=0002
0.000031 libguestfs: ເປີດຕົວ: euid=1000
0.000030 libguestfs: ສະບັບ libvirt = 1002012 (1.2.12)
[ແລະອື່ນໆ]

ເວ​ລາ​ແມ່ນ​ວິ​ນາ​ທີ (ເພີ່ມ​ຂຶ້ນ​ນັບ​ຕັ້ງ​ແຕ່​ເສັ້ນ​ທີ່​ຜ່ານ​ມາ​)​.

ລາຍລະອຽດ ເວລາ ການ ນຳ ໃຊ້ ລະບົບ


ທ່ານສາມາດນໍາໃຊ້ SystemTap (ອາຫານຫຼັກ(1)) ເພື່ອໃຫ້ໄດ້ຮັບລາຍລະອຽດຈາກໂຄງການ libguestfs.

ບັນທຶກສະຄິບຕໍ່ໄປນີ້ເປັນ time.stap:

ໂລກສຸດທ້າຍ;

function display_time () {
now = gettimeofday_us ();
delta = 0;
ຖ້າ (ສຸດທ້າຍ > 0)
delta = ໃນປັດຈຸບັນ - ສຸດທ້າຍ;
last = ໃນປັດຈຸບັນ;

printf("%d (+%d):", ໃນປັດຈຸບັນ, delta);
}

ການສືບສວນເລີ່ມຕົ້ນ {
ສຸດທ້າຍ = 0;
printf ("ພ້ອມ\n");
}

/* ສະແດງການໂທທັງໝົດໄປຫາເຄື່ອງໝາຍສະຖິດ. */
ຂະບວນການສືບສວນ ("/ usr / lib*/libguestfs.so.0")
.provider("guestfs").mark("*") ? {
display_time();
printf ("\t%s %s\n", $$name, $$parms);
}

/* ສະແດງການໂທທັງໝົດໄປຫາຟັງຊັນ guestfs_*. */
ຂະບວນການສືບສວນ ("/ usr / lib*/libguestfs.so.0")
.function("guestfs_[az]*") ? {
display_time();
printf ("\t%s %s\n", probefunc(), $$parms);
}

ແລ່ນມັນເປັນຮາກຢູ່ໃນປ່ອງຢ້ຽມດຽວ:

# stap time.stap
ພ້ອມ

ມັນພິມ "ພ້ອມ" ເມື່ອ SystemTap ໄດ້ໂຫລດໂຄງການ. ດໍາເນີນໂຄງການ libguestfs ຂອງທ່ານ,
guestfish ຫຼືເຄື່ອງມື virt ໃນປ່ອງຢ້ຽມອື່ນ. ຍົກ​ຕົວ​ຢ່າງ:

$ guestfish -a /dev/null run

ຢູ່ໃນປ່ອງຢ້ຽມ stap ທ່ານຈະເຫັນເປັນຈໍານວນຂະຫນາດໃຫຍ່ຂອງຜົນຜະລິດ, ໂດຍໃຊ້ເວລາສໍາລັບແຕ່ລະຄົນ
ສະແດງໃຫ້ເຫັນຂັ້ນຕອນ (microseconds ໃນວົງເລັບ). ຍົກ​ຕົວ​ຢ່າງ:

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): launch_start
[ແລະອື່ນໆ]

ທ່ານຈະຕ້ອງປຶກສາ, ແລະແມ້ກະທັ້ງດັດແກ້, ແຫຼ່ງຂອງ libguestfs ເພື່ອເຂົ້າໃຈຢ່າງເຕັມສ່ວນ
ຜົນຜະລິດ.

ລາຍລະອຽດ ກຳ ລັງດີບັກ ການ ນຳ ໃຊ້ GDB


ທ່ານສາມາດແນບໃສ່ອຸປະກອນ BIOS/kernel ໂດຍໃຊ້ gdb. ຖ້າເຈົ້າຮູ້ວ່າເຈົ້າກໍາລັງເຮັດຫຍັງ,
ນີ້ສາມາດເປັນວິທີທີ່ມີປະໂຫຍດໃນການວິນິດໄສການຖົດຖອຍຂອງ boot.

ກ່ອນອື່ນ ໝົດ, ທ່ານຕ້ອງປ່ຽນ qemu ເພື່ອໃຫ້ມັນແລ່ນດ້ວຍຕົວເລືອກ "-S" ແລະ "-s". ທາງເລືອກເຫຼົ່ານີ້
ເຮັດໃຫ້ qemu ຢຸດຊົ່ວຄາວໃນເວລາ boot ແລະອະນຸຍາດໃຫ້ທ່ານສາມາດແນບ debugger ໄດ້. ອ່ານ whoa(1) ຕໍ່ໄປ
ຂໍ້ມູນ. Libguestfs ເອີ້ນ qemu ຫຼາຍຄັ້ງ (ເພື່ອສະແກນຜົນໄດ້ຮັບການຊ່ວຍເຫຼືອແລະອື່ນໆ)
ແລະທ່ານພຽງແຕ່ຕ້ອງການການຮຽກຮ້ອງສຸດທ້າຍຂອງ qemu ທີ່ຈະນໍາໃຊ້ທາງເລືອກເຫຼົ່ານີ້, ສະນັ້ນໃຫ້ໃຊ້ wrapper qemu
script ແບບນີ້:

#!/ bin / bash -

# ຕັ້ງສິ່ງນີ້ເພື່ອຊີ້ໄປຫາຄູ່ຄູ່ qemu ທີ່ແທ້ຈິງ.
qemu=/usr/bin/qemu-kvm

ຖ້າ [ "$1" != "-global" ]; ແລ້ວ
# ສະແກນການຊ່ວຍເຫຼືອຜົນຜະລິດແລະອື່ນໆ.
exec $qemu "$@"
ອື່ນ
# ແລ່ນ qemu ແທ້ໆ.
exec $qemu -S -s "$@"
fi

ຕອນນີ້ເປີດໃຊ້ guestfish ຫຼືເຄື່ອງມື libguestfs ອື່ນດ້ວຍ qemu wrapper (ເບິ່ງ "QEMU WRAPPERS" ໃນ
ແຂກ(3​) ເພື່ອ​ເຂົ້າ​ໃຈ​ສິ່ງ​ທີ່​ນີ້​ແມ່ນ​ເຮັດ​ໄດ້​)​:

LIBGUESTFS_HV=/path/to/qemu-wrapper guestfish -a /dev/null -v ແລ່ນ

ນີ້ຄວນຈະຢຸດຊົ່ວຄາວຫຼັງຈາກ qemu ເປີດຕົວ. ໃນປ່ອງຢ້ຽມອື່ນ, ຕິດກັບ qemu ໂດຍໃຊ້ gdb:

$ gdb
(gdb) ຊຸດສະຖາປັດຕະຍະກໍາ i8086
ສະຖາປັດຕະຍະກໍາເປົ້າຫມາຍແມ່ນສົມມຸດວ່າ i8086
(gdb) ເປົ້າໝາຍໄລຍະໄກ :1234
ການດີບັກທາງໄກໂດຍໃຊ້: 1234
0x0000ffff0 ໃນ ?? ()
(gdb) ຕໍ່

ໃນຈຸດນີ້ທ່ານສາມາດນໍາໃຊ້ເຕັກນິກ gdb ມາດຕະຖານເຊັ່ນ:. ກົດ "^C" ເພື່ອຂັດຂວາງການບູດ
ແລະ "bt" ໄດ້ຮັບການຕິດຕາມ stack, ກໍານົດ breakpoints, ແລະອື່ນໆ. ໃຫ້ສັງເກດວ່າໃນເວລາທີ່ທ່ານໄດ້ຜ່ານມາ
BIOS ແລະເຂົ້າໄປໃນ Linux kernel, ທ່ານຈະຕ້ອງການປ່ຽນສະຖາປັດຕະຍະກໍາກັບຄືນໄປບ່ອນ 32 ຫຼື 64
bit

ໃຊ້ guestfs-performance ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net


ເຊີບເວີ ແລະສະຖານີເຮັດວຽກຟຣີ

ດາວໂຫຼດແອັບ Windows ແລະ Linux

  • 1
    facetracknoir
    facetracknoir
    Modular headtracking ໂຄງ​ການ​ທີ່​
    ຮອງຮັບຫຼາຍຕົວຕິດຕາມໃບຫນ້າ, ຕົວກອງ
    ແລະໂປໂຕຄອນເກມ. ໃນບັນດາຜູ້ຕິດຕາມ
    ແມ່ນ SM FaceAPI, AIC Inertial Head
    ບົບຕິດຕາມລຸດ ...
    ດາວໂຫລດ facetracknoir
  • 2
    PHP QR Code
    PHP QR Code
    PHP QR Code ແມ່ນແຫຼ່ງເປີດ (LGPL)
    ຫ້ອງສະຫມຸດສໍາລັບການສ້າງລະຫັດ QR,
    ບາໂຄດ 2 ມິຕິ. ອີງໃສ່
    libqrencode C ຫໍສະຫມຸດ, ສະຫນອງ API ສໍາລັບ
    ສ້າງ QR Code barc...
    ດາວໂຫລດ PHP QR Code
  • 3
    freeciv
    freeciv
    Freeciv ເປັນ turn-based ຟຣີ
    ເກມຍຸດທະສາດ multiplayer, ເຊິ່ງແຕ່ລະຄົນ
    ຜູ້ນກາຍເປັນຜູ້ນໍາຂອງ a
    ພົນ​ລະ​ເຮືອນ​, ການ​ຕໍ່​ສູ້​ເພື່ອ​ໃຫ້​ໄດ້​ຮັບ​
    ເປົ້າໝາຍສູງສຸດ: ຈະເປັນ...
    ດາວໂຫລດ Freeciv
  • 4
    ກ່ອງຊາຍ Cuckoo
    ກ່ອງຊາຍ Cuckoo
    Cuckoo Sandbox ໃຊ້ອົງປະກອບເພື່ອ
    ຕິດຕາມກວດກາພຶດຕິກໍາຂອງ malware ໃນ a
    ສະພາບແວດລ້ອມ Sandbox; ໂດດດ່ຽວຈາກ
    ສ່ວນທີ່ເຫຼືອຂອງລະບົບ. ມັນສະຫນອງອັດຕະໂນມັດ
    ການ​ວິ​ເຄາະ o...
    ດາວໂຫລດ Cuckoo Sandbox
  • 5
    LMS-YouTube
    LMS-YouTube
    ຫຼິ້ນວິດີໂອ YouTube ໃນ LMS (ການສົ່ງ
    Triode's to YouTbe API v3) ນີ້ແມ່ນ
    ຄໍາຮ້ອງສະຫມັກທີ່ຍັງສາມາດດຶງຂໍ້ມູນໄດ້
    ຈາກ
    https://sourceforge.net/projects/lms-y...
    ດາວໂຫລດ LMS-YouTube
  • 6
    ມູນນິທິການນໍາສະເຫນີ Windows
    ມູນນິທິການນໍາສະເຫນີ Windows
    Windows Presentation Foundation (WPF)
    ເປັນກອບ UI ສໍາລັບການກໍ່ສ້າງ Windows
    ແອັບພລິເຄຊັນ desktop. WPF ສະຫນັບສະຫນູນ a
    ຊຸດການພັດທະນາຄໍາຮ້ອງສະຫມັກຢ່າງກວ້າງຂວາງ
    ຄຸນ​ລັກ​ສະ​ນະ...
    ດາວໂຫລດ Windows Presentation Foundation
  • ເພີ່ມເຕີມ »

Linux ຄຳ ສັ່ງ

Ad