Pada awalnya, pertanyaannya tampaknya sedikit konyol / membingungkan karena OS melakukan pekerjaan mengelola proses eksekusi.
Namun, saya ingin mengukur berapa banyak proses yang terikat CPU / IO dan saya merasa OS saya mengganggu eksperimen saya dengan, misalnya, proses OS terjadwal.
Ambil contoh situasi berikut: Saya menjalankan proses A dua kali dan mendapatkan output berikut dari alat "waktu" (kolom waktu dalam detik):
+---+-------+---------+-----------+---------+
|Run|Process|User Time|System Time|Wall time|
+---+-------+---------+-----------+---------+
|1 |A |196.3 |5.12 |148.86 |
|2 |A |190.79 |4.93 |475.46 |
+---+-------+---------+-----------+---------+
Seperti yang dapat kita lihat, meskipun waktu pengguna dan sistem serupa, waktu yang telah berlalu dari keduanya secara drastis berubah (perbedaan ~ 5 menit). Terasa seperti sesuatu di lingkungan saya menyebabkan pertikaian.
Saya ingin menghentikan setiap proses latar belakang / layanan yang mungkin untuk menghindari segala jenis kebisingan selama percobaan saya, tetapi saya menganggap diri saya pengguna pemula / menengah unix dan saya tidak tahu bagaimana menjamin ini.
Saya menggunakan Linux 4.4.0-45-generic dengan Ubuntu 14.04 LTS 64 bit.
Saya sangat menghargai bantuannya. Jika kalian membutuhkan informasi yang hilang, saya akan segera mengedit posting saya.
Info CPU
$ grep proc /proc/cpuinfo | wc -l
8
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 60
Stepping: 3
CPU MHz: 4002.609
BogoMIPS: 7183.60
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-7
sumber
nice -19 process
Jawaban:
Anda memiliki konfigurasi opsi kernel di mana CPU tidak akan digunakan oleh OS, itu disebut
isolcpus
.Konfigurasi ini saya akan menjelaskan cara men-setup, dapat memiliki lebih banyak kegunaan daripada untuk pengujian.
Meru misalnya, menggunakan teknologi ini di pengontrol AP berbasis Linux mereka, untuk menjaga lalu lintas jaringan dari mengganggu kerja bagian dalam OS, yaitu operasi I / O.
Saya juga menggunakannya di web frontend yang sangat sibuk, untuk alasan yang sama: Saya telah mengetahui dari pengalaman hidup bahwa saya kehilangan kontrol terlalu teratur untuk selera server itu; harus me-reboot dengan paksa sampai saya memisahkan daemon ujung depan pada CPU khusus itu sendiri.
Karena Anda memiliki 8 CPU, Anda dapat memeriksa dengan output dari perintah:
atau
Tambahkan di Debian / Ubuntu di file
/etc/default/grub
ke opsiGRUB_CMDLINE_LINUX
:(ini 7, karena dimulai pada 0, dan Anda memiliki 8 core)
Lalu lari,
Ini memberitahu kernel untuk tidak menggunakan salah satu core Anda.
Mulai ulang sistem.
Kemudian mulailah proses Anda.
Segera setelah memulainya, Anda dapat mengubah CPU ke-8 (7 karena 0 adalah yang pertama), dan pastikan Anda satu-satunya yang menggunakan CPU itu.
Untuk itu, gunakan perintah:
Untuk membaca lebih lanjut tentang itu, lihat: isolcpus, numactl dan tasket
Juga menggunakan
ps -eF
Anda harus melihat di kolom PSR prosesor yang digunakan.Saya memiliki server dengan CPU 2 dan 3 terisolasi, dan memang, itu dapat dilihat dengan
ps -e
satu-satunya proses di userland sebagaimana dimaksud, adalahpound
.Jika Anda membandingkannya dengan CPU yang tidak terisolasi, mereka menjalankan lebih banyak hal (jendela di bawah slide ):
sumber
isolcpus