Kinerja

M/K adalah faktor terpenting dalam kinerja sistem M/K. M/K menempatkan permintaan yang besar pada CPU untuk menjalankan kode device driver dan menjadwalkan proses dengan adil dan efisien ketika proses tersebut diblok atau tidak diblok. Hasil context switch menekan CPU dan cache perangkat kerasnya. M/K juga memberitahukan ketidakefisienan mekanisme penanganan interupsi dalam kernel, dan M/K mengisi bus memori ketika data disalin antara pengendali dan memori fisikal, dan lagi-lagi ketika data disalin antara buffer kernel dan ruang data aplikasi. Menyalin dengan semua perintah-perintah ini adalah hal yang sangat diperhatikan dalam arsitektur komputer.

Walaupun komputer modern dapat menangani ratusan interupsi tiap detik, penanganan interupsi adalah tugas yang mahal. setiap instruksi menyebabkan sistem melakukan perubahan status untuk menjalankan interrupt handler dan kemudian untuk mengembalikan status seperti semula. M/K terprogram dapat lebih efisien daripada M/K yang dikendalikan oleh interupsi, jika jumlah cycle yang dihabiskan pada saat sibuk menunggu tidak berlebihan. M/K yang sudah selesai biasanya meng- unblock sebuah proses membawanya menjadi sebuah context-switch sepenuhnya.

Lalu lintas jaringan juga dapat menyebabkan tingkat context-switch yang tinggi. Sebagai contoh, login jarak jauh diantaranya:

  1. Setiap karakter yang diketik pada mesin lokal harus dipindahkan ke mesin jarak jauh atau remote machine . Pada mesin lokal, karakter diketik; interupsi keyboard dihasilkan; dan karakter melewati interrupt handler ke device driver, menuju kernel, dan kemudian ke proses pengguna.

  2. Proses pengguna mengeluarkan sebuah system call M/K jaringan untuk mengirimkan karakter menuju mesin jarak jauh. Karakter kemudian mengalir ke dalam kernel lokal melalui lapisan jaringan yang membangun sebuah paket jaringan dan menuju device driver jaringan.

  3. Device driver jaringan mentransfer paket itu kepada pengendali jaringan yang mengirimkan karakter dan menghasilkan sebuah interupsi. Interupsi dilewatkan melalui kernel supaya system call M/K jaringan selesai.

  4. Sekarang, perangkat keras jaringan sistem jarak jauh menerima paket dan sebuah interupsi dihasilkan. Karakter dibuka paketnya dari protokol jaringan dan diberikan kepada jaringan daemon yang sesuai. Jaringan daemon mengidentifikasi login jarak jauh mana yang terlibat dan mengirim paket kepada subdaemon yang sesuai untuk sesi tersebut.

  5. Keseluruhan aliran pengiriman dan penerimaan pesan ini ada konsep context-switch dan state-switch ada pada gambar Komunikasi antar komputer. Biasanya, penerima mengirimkan kembali karakter kembali ke pengirim; pendekatan ini menggandakan pekerjaan

Pengembang Solaris menerapkan kembali telnet daemon menggunakan thread in-kernel untuk menghapus context switch yang terlibat dalam pemindahan karakter antara daemon dan kernel. Sun memperkirakan bahwa peningkatan ini meningkatkan jumlah maksimum login jaringan dari cuma beberapa ratus menjadi beberapa ribu pada server yang lebih besar.

Sistem lain menggunakan front-end processor terpisah untuk terminal M/K untuk mengurangi beban interupsi pada CPU utama. Sebagai contoh, terminal concentrator dapat mengirim sinyal secara bersamaan dari ratusan terminal jarak jauh ke dalam satu port pada sebuah komputer yang besar. Sebuah channel M/K bersifat dedicated artinya CPU ang mempunyai tujuan khusus yang ditemukan pada bingkai utama dan sistem high-end lainnya. Pekerjaan dari sebuah channel adalah untuk mengambil pekerjaan M/K dari CPU utama. Prinsipnya adalah channel menjaga lalu lintas data lancar ketika CPU utama dapat bebas memproses data. Seperti device controller dan DMA controller yang ditemukan pada komputer berukuran kecil, sebuah channel dapat memproses program yang lebih umum dan canggih sehingga channel dapat digunakan untuk workload tertentu.

Kita dapat menggunakan beberapa prinsip untuk meningkatkan efisiensi M/K:

  1. mengurangi jumlah context-switch.

  2. mengurangi jumlah waktu untuk data harus disalin ke dalam memori ketika dikirim antara perangkat dan aplikasi.

  3. mengurangi frekuensi interupsi dengan menggunakan transfer besar-besaran, smart controller dan polling jika busy waiting dapat diminimalkan.

  4. meningkatkan konkurensi dengan menggunakan DMA controller ang sudah diketahui atau channel untuk mengambil salinan data sederhana dari CPU.

  5. memindahkan pemrosesan primitif ke perangkat keras supaya operasi pada device controller dapat berjalan bersamaan dengan CPU dan operasi bus.

  6. seimbangkan antara CPU, subsistem memori, bus dan kinerja M/K karena sebuah overloaded pada salah satunya akan menyebabkan idle pada yang lain.

Gambar 11.6. Komunikasi antar komputer

Komunikasi antar komputer

Perangkat berbeda-beda dalam kompleksitas, sebagai contoh sebuah mouse yang sederhana. Pergerakan mouse dan button click diubah menjadi nilai numerik yang akan dikirim dari perangkat keras melalui mouse device driver lalu menuju aplikasi. Sebaliknya, fungsionalitas yang disediakan disk windows NT device driver sangatlah kompleks. Tidak hanya mengatur disk tunggal, tetapi juga menerapkan RAID array. Untuk melakukan hal tersebut, NT device driver mengubah permintaan baca dan tulis aplikasi menjadi sebuah kumpulan operasi disk M/K. Lebih dari itu, NT device driver juga menerapkan penanganan error yang canggih dan algoritma pemulihan data, dan mengambil banyak langkah untuk mengoptimalkan kinerja disk karena pentingnya kinerja penyimpanan sekunder untuk kinerja sistem secara keseluruhan.

Gambar di bawah ini menjelaskan pergerakan fungsionalitas perangkat dalam meningkatkan kinerja M/K.

Gambar 11.7. Peningkatan Fungsionalitas Perangkat

Peningkatan Fungsionalitas Perangkat

  1. Mula-mula, kita terapkan eksperimen algoritma M/K pada tingkat aplikasi karena kode aplikasi bersifat fleksibel, dan bug pada aplikasi tidak menyebabkan system crash. Lebih jauh lagi, dengan mengembangkan kode pada tingkat aplikasi, kita menghindari kebutuhan untuk me-reboot atau me- reload device driver setelah setiap perubahan pada kode.

    Sebuah penerapan pada tingkatan aplikasi tidak dapat efisien. Bagaimana pun juga, karena biaya context-switch, dan karena aplikasi tidak dapat menerima kemudahan dari struktur data kernel internal dan fungsionalitas kernel seperti internal kernel messaging, threading, dan locking.

  2. Ketika algoritma tingkat aplikasi sudah memperlihatkan kegunaannya, kita akan menerapkannya kembali pada kernel. Hal ini akan meningkatkan kinerja, tapi usaha pengembangan adalah hal yang lebih menantang karena sebuah sistem operasi kernel sangatlah besar dan sebuah sistem yang kompleks. Lebih dari itu, penerapan in-kernel harus di-debug secara hati-hati untuk menghindari data corruption dan system crashes.

  3. Kinerja yang sangat tinggi mungkin bisa didapat dengan sebuah penerapan spesialisasi dalam perangkat keras, baik pada devicenya maupun pada controller. Ketidakuntungan penerapan perangkat keras ini meliputi kesukaran dan mahalnya pembuatan pengembangan lebih jauh atau untuk memperbaiki bug, waktu pengembangan yang bertambah, dan berkurangnya fleksibilitas. Sebagai contoh, sebuah pengendali RAID perangkat keras tidak menyediakan cara untuk kernel untuk mempengaruhi urutan atau lokasi dari pembacaan dan penulisan disk tunggal walaupun kernel mempunyai informasi khusus tentang workload yang akan memudahkan kernel untuk meningkatkan kinerja M/K.