Tetapkan nilai bagus default untuk pengguna tertentu (limit.conf)

12

Bisakah seseorang memberi tahu saya cara mengatur nilai default nice(seperti yang ditampilkan oleh top) seorang pengguna? Saya telah menemukan bahwa /etc/security/limits.conf adalah tempatnya tetapi jika saya letakkan:

username_of_a_guy  -  nice  19
username_of_a_guy  soft  nice  19
username_of_a_guy  hard  nice  19

Tidak berfungsi (padahal seharusnya, kan?).

Perhatikan bahwa saya telah reboot sejak itu.

Terima kasih banyak sebelumnya atas bantuannya. Saya menggunakan debian tidak stabil (uptodate).

Konteks:

Di tempat kerja saya, kami memiliki jaringan lokal: setiap orang memiliki komputer sendiri dan semua orang dapat membuat akun di mesin orang lain jika ada yang mau. Aturan praktisnya adalah bahwa jika Anda bekerja pada komputer orang lain, silakan proses Anda ( nice 19).

Saya ingin menetapkan nilai bagus default untuk pengguna yang diberikan menjadi 19 sekali dan untuk semua.

Alex
sumber

Jawaban:

13

Saya percaya format yang benar adalah:

@users      -       priority        10
username    -       priority        19

Ini adalah contoh pengaturan yang saya gunakan dalam produksi (jelas dengan pengguna nyata / grup).

The nicePengaturan adalah untuk menentukan nilai minimum bagus (yaitu prioritas maksimum) seseorang dapat mengatur proses mereka untuk, tidak prioritas default.

jsbillings
sumber
2
Pertama-tama, terima kasih atas jawaban Anda (terima kasih juga, @mattdm). Tampaknya metode ini berhasil. Namun, saya masih bingung tentang perbedaan antara "nice" dan "priority": keduanya ditampilkan oleh "top" tetapi nilai yang dikutip untuk nice adalah yang harus saya tetapkan untuk prioritas. Terlihat agak aneh bagi saya. Juga, apakah prioritas yang lebih besar (katakanlah 39 bukannya 20) berarti proses yang kurang penting seperti halnya untuk kebaikan? Terima kasih.
Alex
4
Prioritas bagus 'NI' di atas adalah apa yang akan ditetapkan oleh prioritypengaturan batas . Ini akan menjadi prioritas default dari setiap proses untuk pengguna / grup tersebut ketika mereka login. Anda hanya dapat mengatur ini antara -20 dan 20. Nilai 'PR' di atas adalah prioritas penjadwal aktual, yang ditentukan oleh beberapa faktor oleh penjadwal kernel.
jsbillings
1
Juga, ya, prioritas yang lebih tinggi berarti lebih kecil kemungkinannya dijadwalkan untuk mendapatkan siklus CPU.
jsbillings
1
Ok, terima kasih banyak atas disambiguasi ini. BTW, saya belum mencoba metode lain (yang melibatkan andatau cgroup) yang mungkin lebih baik dalam situasi lain daripada milik saya (perlu pemeriksaan terus-menerus, atau manajemen banyak pengguna - yang agak terlalu banyak dalam kasus saya).
Alex
Hmmmm ... Ini berfungsi untuk satu pengguna tetapi tidak yang lain pada mesin Ubuntu saya. Saya akan kembali jika saya bisa mengetahui alasannya. ;-)
Ken Sharp
3

Saya dapat mengkonfirmasi bahwa itu juga tidak berfungsi pada sistem saya. Dokumen mengatakan "kernel 2.6.11 dan lebih tinggi", dan saya menggunakan kulit mentah Fedora dengan kernel 2.6.38-rc6. Saya bertanya-tanya apakah itu tergantung pada penjadwal, dan tidak bekerja dengan CFQ yang diperkenalkan-in-2.6.23 ("Penjadwal Sepenuhnya Adil").

Namun, sesuatu yang akan berhasil adalah yang mustahil untuk dicari karena namanya mengerikan and- daemon auto-nice. Lihat http://and.sourceforge.net/ . Ini tersedia dari Fedora yum install and, tetapi sayangnya sepertinya tidak ada dalam EPEL. Dan itu di Debian juga: apt-get install and.

Namun, jika Anda menggunakan distribusi modern, ada Even Even Better. Anda dapat menggunakan alat-alat dari libcgroup untuk mendirikan sebuah kernel-level cgroup membatasi saham CPU, dan secara otomatis "mengklasifikasikan" proses yang pengguna ke cgroup ini. Dengan ini, Anda juga dapat memprioritaskan I / O, dan membatasi penggunaan memori (termasuk bagian dari cache disk).

mattdm
sumber
Saya setuju bahwa menggunakan cgroup adalah cara terbaik untuk membatasi orang lain dari memonopoli semua siklus CPU di komputer Anda. Sayangnya, sistem yang saya dukung (RHEL5) tidak memiliki kernel yang mendukungnya, jadi saya harus tetap menyesuaikan prioritas. Setelah kami memperbarui ke RHEL6, saya yakin kami akan memiliki beberapa pengaturan cgroup yang cukup kompleks.
jsbillings