GNU/Linux >> Belajar Linux >  >> Linux

Apakah mengubah prioritas proses game menjadi realtime buruk bagi CPU?

Mengubah prioritas suatu proses hanya menentukan seberapa sering proses ini akan berjalan ketika proses lain bersaing untuk waktu CPU. Itu tidak berdampak ketika prosesnya adalah satu-satunya yang menggunakan waktu CPU. Proses dengan prioritas minimum pada sistem yang tidak aktif mendapatkan waktu CPU 100%, sama seperti proses dengan prioritas maksimum.

Jadi, Anda dapat menjalankan game dengan prioritas yang lebih tinggi, tetapi itu tidak akan membuatnya berjalan lebih cepat kecuali ada hal lain di sistem yang menggunakan waktu CPU dalam jumlah yang signifikan.

Saya merekomendasikan menjaga prioritas lebih rendah dari server X, karena jika server X menginginkan waktu CPU, kemungkinan karena game memintanya untuk menampilkan sesuatu yang kompleks, dan menampilkan biasanya merupakan tugas yang menuntut CPU (tetapi tergantung seberapa banyak pekerjaan dilakukan di GPU — prioritas CPU tidak berpengaruh pada GPU).

CPU dirancang untuk mengeksekusi kode. Mengubah prioritas proses tidak akan memengaruhi berapa banyak pekerjaan yang dilakukan CPU, tetapi meskipun demikian, hal itu tidak akan merusak CPU, itu hanya akan membuatnya bekerja lebih panas dan membuat kipas di komputer berhembus lebih kencang.


Apakah Anda berbicara tentang mengubah jumlah permintaan CPU saat sedang menjalankan utas?

CPU modern sebenarnya menggunakan loncatan kecepatan yang sangat cepat. Misalnya jika Anda melakukan analisis clocking Intel Core i5/i7 Anda dapat melihat kecepatan clock berkedip-kedip dengan sangat cepat. Ini adalah bagian dari cara Intel menyesuaikan kinerja relatif terhadap jumlah daya yang digunakan. Anda mungkin memiliki banyak daya yang tersedia di PC desktop, tetapi daya tersebut diubah menjadi panas saat CPU bekerja lebih keras, jadi penting untuk mendapatkan hasil maksimal per watt.

Saya hanya tahu ini dari apa yang saya baca di forum game lain. Saya bukan ilmuwan CPU.

Saya tidak berpikir Anda akan melakukan kerusakan apa pun dari menyetel utas ke "kejahatan" maksimumnya. Satu-satunya hal yang harus Anda perhatikan adalah seberapa panas CPU Anda, tetapi kecuali Anda telah menggunakan overvolting di BIOS maka sangat tidak mungkin untuk memasak CPU sebelum dimatikan.

CPU modern dirancang untuk mengubah kecepatan dengan cepat. Lakukan penelusuran Intel Speed ​​Stepping dan 'CPU C states' dan Anda akan mengerti maksud saya.


Menggunakan renice pada program Linux tidak akan menghabiskan CPU Anda, tetapi belum tentu melakukan apa yang Anda inginkan.

Prioritas tidak ada hubungannya dengan seberapa cepat CPU mengeksekusi kode. Itu mengeksekusi kode dari program di tingkat prioritas yang berbeda sama cepatnya. Prioritas apa yang diubah adalah program mana yang dipilih sistem operasi untuk dijalankan ketika diberi pilihan. CPU hanya dapat menjalankan satu "utas" eksekusi pada satu waktu (secara teknis 1 per inti untuk CPU multi-inti). Jika perlu melakukan lebih dari itu, ia bergantung pada multitasking - ia beralih bolak-balik antara menjalankan program yang berbeda untuk memberikan ilusi menjalankan lebih banyak utas daripada CPU. Saat memilih berapa banyak waktu yang diberikan untuk masing-masing tugas ini, ia menggunakan prioritas sebagai petunjuk.

Yang dimaksud dengan "waktu nyata" bagi komputer adalah kurang "berjalan secepat ini" dan lebih "jangan mendahului proses ini". Pemrograman waktu nyata sangat penting dalam banyak bidang. Misalnya, jika saya sedang menulis perangkat lunak yang mengatur rem anti-lock di mobil, saya benar-benar tidak ingin tugas saya terlambat beberapa milidetik karena OS memutuskan perlu menjalankan diagnostik pada wiper kaca depan. Oleh karena itu, perangkat lunak manajemen rem anti-penguncian di mobil dijalankan pada prioritas "waktu nyata".

Sejujurnya, di Linux, tingkat prioritas "real time" agak keliru. Ini karena cara Linux menjadwalkan prosesnya. Di windows, jika Anda memiliki proses yang berjalan pada prioritas yang lebih tinggi, proses yang berjalan pada prioritas yang lebih rendah tidak diberikan waktu CPU kecuali tugas dengan prioritas yang lebih tinggi sedang menunggu sesuatu -- tidak ada sama sekali. Hanya proses kernel yang diizinkan untuk dijalankan di atas tugas Windows "realtime". Windows memiliki ton bloatware yang berjalan di latar belakang setiap saat, sehingga menaikkan prioritas ke "realtime" akan mencegah semua sampah tersebut berjalan.

Namun, ada masalah dengan ini. Terkadang tugas dengan prioritas lebih tinggi bergantung pada salah satu tugas dengan prioritas lebih rendah. Ini disebut "inversi prioritas" dan merupakan topik besar dalam dunia pemrograman multithreaded. Ketika ini terjadi, tugas dengan prioritas lebih tinggi dapat membuat tugas dengan prioritas lebih rendah kelaparan, tidak menyadari bahwa tugas itu berhenti sendiri! Di Linux, ini tidak terjadi karena di Linux, prioritas dipandang sebagai cara untuk menentukan porsi CPU yang diberikan untuk setiap program, daripada pendekatan semua atau tidak sama sekali. Sebuah proses yang berjalan pada -20 mendapatkan secara substansial lebih banyak waktu CPU daripada yang berjalan pada 0, tetapi bahkan dengan adanya program -20, program 0 mendapatkan beberapa waktu CPU. Jika ingatan berfungsi, penjadwal Linux saat ini memberikan program pada -1 dua kali lebih banyak daya CPU daripada 0, dan program pada -2 dua kali lebih banyak dari -1, dan seterusnya. Ini berarti bahwa 0,9999046% dari waktu CPU Anda akan digunakan untuk program di -20, tetapi sebagian kecil tidak buka program di 0. Program di 0 akan terasa seperti dijalankan pada prosesor 200kHz!

Jika Anda ingin benar waktu nyata, di mana Anda dapat mencegah hal lain mendahului Anda, Anda harus menulis driver kernel, atau Anda harus menggunakan ekstensi waktu nyata ke Linux. Redhat memiliki satu yang disebut MRG, yang memungkinkan pemrosesan waktu nyata dengan Linux. Dalam hal itu "waktu nyata" berarti sesuatu yang spesifik. Di bawah MRG, pengguna dalam grup "waktu nyata" diizinkan untuk menggunakan ekstensi waktu nyata ini (yang dapat membuat prosesor sibuk selamanya, karena mereka sengaja tidak menggunakan penjadwal Linux ramah yang bagus).


Linux
  1. Rsync Apakah Mengubah Izin Direktori?

  2. Periksa Penggunaan Cpu/utas Untuk Node Di Manajer Pekerjaan Slurm?

  3. CentOS / RHEL :Bagaimana memprioritaskan perangkat yang digunakan untuk partisi swap

  1. UNIX / Linux :Bagaimana mengubah kebaikan (prioritas) suatu proses

  2. Bagaimana cara mengatur afinitas CPU untuk proses dari C atau C++ di Linux?

  3. Bagaimana cara Linux mempertahankan kendali CPU pada mesin single-core?

  1. Nilai Maksimum Id Proses?

  2. Bagaimana cara menghitung penggunaan CPU dari suatu proses oleh PID di Linux dari C?

  3. Periksa batas FD terbuka untuk proses tertentu di Linux