pengembangan-web-mp-pd.com

Berapa banyak Konteks Konteks yang "normal" (sebagai fungsi inti CPU (atau lainnya))?

Hi Linux/UNIX Overlords,

Apakah ada di antara Anda yang memiliki aturan praktis tentang berapa banyak saklar konteks (per inti prosesor) Normal pada server Linux?

Kuliah saya di sini membawanya, dan dia melihat 16K pada 8-core x86_64 mesin.

Berikut adalah beberapa statistik dari sarface selama beberapa hari terakhir ...

alt teks http://src.autonomy.net.au/imagebin/81895e338fae67d3d205c09db44a81e6-Picture_10.png

Dan untuk melihat statistik proses pembuatan, berikut ini adalah tampilan logaritmik dari grafik yang sama ...

alt teks http://src.autonomy.net.au/imagebin/7481f7e52bead4effc90248fc23c72fe-Picture_11.png

Dan 8 core bosan sampai mati ...

alt teks http://src.autonomy.net.au/imagebin/0e94326652e977fd74edcd840f94200f-Picture_12.png

CS vs IOwait (skala x10000)

alt teks http://src.autonomy.net.au/imagebin/a52a2a8a120394849c0da4045933e306-Picture_13.png

Informasi lebih berguna jika ada yang bertanya ..

  • Penyimpanan tempat server bekerja adalah 0,5TB SAN melalui FC
  • Ada 8GB RAM, sebagian besar cache - tidak ada pertukaran.
37
Xerxes

Ini sangat tergantung pada jenis aplikasi yang Anda jalankan. Jika Anda memiliki aplikasi yang syscalls WRT yang sangat memicu-senang, Anda dapat berharap untuk melihat sejumlah besar pengalihan konteks. Jika sebagian besar aplikasi Anda menganggur dan hanya bangun ketika ada hal-hal yang terjadi pada soket, Anda dapat mengharapkan untuk melihat tingkat switch konteks rendah.

Panggilan sistem

Panggilan sistem menyebabkan perubahan konteks berdasarkan sifatnya sendiri. Ketika suatu proses melakukan panggilan sistem, pada dasarnya ia memberitahu kernel untuk mengambil alih dari titik waktu dan memori saat ini untuk melakukan hal-hal yang tidak dapat dilakukan oleh proses tersebut, dan kembali ke tempat yang sama ketika selesai.

Ketika kita melihat definisi syscall write (2) dari Linux, ini menjadi sangat jelas:

 NAMA 
 Tulis - tulis ke deskriptor file 
 
 SYNOPSIS 
 #Include 
 
 Ssize_t write (int fd, const void * buf, size_t count); 
 
 DESKRIPSI 
 tulis () tulis hingga hitung byte dari buffer menunjuk buf ke file 
 yang disebut oleh file descriptor fd. [..] 
 
 NILAI KEMBALI 
 Pada keberhasilan, jumlah byte yang ditulis dikembalikan (nol menunjukkan 
 Tidak ada yang ditulis). Pada kesalahan, -1 dikembalikan, dan errno diatur 
 Dengan tepat. 
 [..] 

Ini pada dasarnya memberitahu kernel untuk mengambil alih operasi dari proses, naik ke count byte, dimulai dari alamat memori yang ditunjuk oleh *buf ke file deskriptor fd dari proses saat ini dan kemudian kembali ke proses dan katakan padanya bagaimana prosesnya.

Contoh yang bagus untuk menunjukkan ini adalah server game khusus untuk game berbasis Sumber Valve, hlds . http://nopaste.narf.at/f1b22dbc9 menunjukkan syscall senilai satu detik yang dilakukan oleh satu instance dari server game yang tidak memiliki pemain di dalamnya. Proses ini memakan waktu sekitar 3% waktu CPU pada Xeon X3220 (2.4Ghz), hanya untuk memberi Anda perasaan betapa mahal ini.

Multi-Penugasan

Sumber lain dari switching konteks mungkin proses yang tidak melakukan syscalls, tetapi perlu dipindahkan dari CPU yang diberikan untuk memberikan ruang bagi proses lain.

Cara yang bagus untuk memvisualisasikan ini adalah cpuburn . cpuburn tidak melakukan syscalls itu sendiri, ia hanya mengulangi ingatannya sendiri, jadi seharusnya tidak menyebabkan perubahan konteks.

Ambil mesin siaga, mulai vmstat dan kemudian jalankan burnMMX (atau tes berbeda dari paket cpuburn) untuk setiap inti CPU yang dimiliki sistem. Anda harus memiliki pemanfaatan sistem penuh pada saat itu tetapi hampir tidak ada peningkatan konteks switching. Kemudian cobalah untuk memulai beberapa proses lagi. Anda akan melihat bahwa tingkat switching konteks meningkat ketika proses mulai bersaing dengan core CPU. Jumlah switching tergantung pada proses/rasio inti dan resolusi multitasking dari kernel Anda.

Bacaan lebih lanjut

linfo.org memiliki Langgan yang bagus tentang apa konteks switch dan panggilan sistem . Wikipedia memiliki informasi umum dan koleksi tautan Nice pada panggilan Sistem.

26
Michael Renner

server web saya yang memuat cukup sekitar 100-150 aktif per detik dengan puncak ke ribuan.

Tingkat peralihan konteks tinggi itu sendiri bukanlah masalah, tetapi mereka mungkin menunjukkan jalan ke masalah yang lebih signifikan.

sunting: Sakelar konteks adalah gejala, bukan penyebab. Apa yang Anda coba jalankan di server? Jika Anda memiliki mesin multiprosesor, Anda mungkin ingin mencoba mengatur afinitas cpu untuk proses server utama Anda.

Atau jika Anda menjalankan X, coba turunkan ke mode konsol.

sunting lagi: pada 16k cs per detik, masing-masing cpu adalah rata-rata dua sakelar per milidetik - yaitu setengah hingga seperenam dari kutu waktu normal. Mungkinkah dia menjalankan banyak utas terikat IO?

edit lagi posting grafik: Jelas terlihat IO terikat. Apakah sistem menghabiskan sebagian besar waktunya di SYS ketika konteksnya tinggi?

sunting sekali lagi: iowait tinggi dan sistem dalam grafik terakhir itu - sepenuhnya memudarkan ruang pengguna. Anda memiliki IO masalah.
Kartu FC apa yang Anda gunakan?

edit: hmmm. setiap kesempatan mendapatkan beberapa tolok ukur terjadi pada Anda SAN akses dengan Bonnie ++ atau dbench selama waktu mati? Saya akan tertarik melihat apakah mereka memiliki hasil yang sama.

sunting: Telah memikirkan hal ini selama akhir pekan dan saya telah melihat patters penggunaan yang serupa ketika Bonnie melakukan pass "tulis byte pada suatu waktu". Itu mungkin menjelaskan jumlah besar peralihan yang terjadi, karena setiap penulisan akan membutuhkan syscall terpisah.

7
jay_dubya

Hal-hal seperti inilah mengapa Anda harus mencoba dan menjaga baseline kinerja untuk server Anda. Dengan begitu, Anda dapat membandingkan hal-hal yang tiba-tiba Anda perhatikan dengan hal-hal yang telah Anda rekam di masa lalu.

Yang mengatakan, saya memiliki server yang berjalan (server Oracle tidak terlalu sibuk, terutama), yang stabil sekitar 2k dengan beberapa puncak 4k. Untuk server saya, itu normal, untuk server orang lain yang mungkin terlalu rendah atau terlalu tinggi.

Seberapa jauh Anda bisa kembali ke data Anda?

Informasi CPU macam apa yang dapat Anda berikan kepada kami?

1
wzzrd

Saya lebih cenderung khawatir tentang tingkat hunian CPU dari status sistem. Jika mendekati 10% atau lebih tinggi, itu berarti OS Anda menghabiskan terlalu banyak waktu untuk melakukan switch konteks. Meskipun memindahkan beberapa proses ke komputer lain adalah banyak lebih lambat, pantas untuk melakukannya.

1
hashei

Tidak ada aturan praktis. Switch konteks hanyalah CPU yang bergerak dari memproses satu utas ke yang lain. Jika Anda menjalankan banyak proses (atau beberapa yang sangat berulir) Anda akan melihat lebih banyak sakelar. Untungnya, Anda tidak perlu khawatir tentang berapa banyak konteks yang ada - biayanya kecil dan lebih atau lebih tidak dapat dihindari.

0
Alex J