- Linux Sistem ini mengelola proses dan thread ringan (LWP) secara terpadu, dengan batasan yang dapat dikonfigurasi di /proc dan faktor-faktor seperti ukuran stack dan memori yang menentukan jumlah maksimum thread.
- Komando Perintah seperti ps, top, htop, dan atop memungkinkan Anda untuk mendaftarkan dan memantau proses dan LWP, sementara /proc dan ps dalam mode thread memudahkan untuk mengetahui jumlah thread per proses.
- Alat-alat seperti kill, pkill, nice, renice, strace, lsof, vmstat, atau iostat digunakan untuk mengontrol, memprioritaskan, dan men-debug proses, sehingga mengoptimalkan kinerja sistem secara keseluruhan.

Jika Anda mengelola server atau sering bekerja dengan Linux, cepat atau lambat Anda perlu mencantumkan proses, thread ringan (LWP), dan memantau konsumsi sumber dayanya . Mengetahui apa yang sedang berjalan, berapa banyak sumber daya yang digunakannya, dan bagaimana setiap proses diatur adalah kunci untuk mendeteksi hambatan, gangguan layanan, atau perilaku sistem yang tidak biasa.
Pada bagian berikut, Anda akan menemukan panduan komprehensif yang menjelaskan apa itu proses dan LWP, cara menampilkannya, cara melihat batasannya, dan cara memantaunya secara real-time . Kita akan menggunakan perintah klasik (ps, top, htop, dll.) sebagai dasar, serta teknik yang lebih canggih dengan /proc, alat diagnostik, dan pengaturan prioritas, semuanya dijelaskan dalam bahasa Spanyol yang jelas dan mudah dipahami.
Proses, thread, dan LWP di Linux: konsep dasar
Di Linux, saat Anda menjalankan sebuah program, sebuah proses akan dibuat, yang merupakan instance dari program tersebut di memori , beserta semua sumber daya yang dibutuhkannya: kode, data, deskriptor file, stack, dll. Setiap proses menerima pengidentifikasi unik yang disebut PID (Process ID), yang merupakan nomor yang kemudian kita gunakan untuk memantau atau menghentikannya.
Selain proses "normal" atau proses berat, kernel juga menangani proses ringan (LWP) . LWP berbagi sebagian besar sumber daya (kode, data, file terbuka, sinyal, dll.) dengan thread lain dalam proses yang sama, tetapi mempertahankan tumpukan dan konteks eksekusinya sendiri. Hal ini membuat peralihan konteks antar thread jauh lebih murah daripada peralihan antar proses independen.
Salah satu fitur unik Linux adalah, secara internal, ia tidak membedakan secara ketat antara proses dan thread : keduanya dikelola sebagai tugas kernel, dan thread pada dasarnya adalah "proses" yang berbagi sumber daya dengan yang lain. Tidak ada struktur thread tingkat kernel khusus seperti pada sistem operasi lain , meskipun dalam praktiknya kita dapat menggunakan LWP untuk mencapai paralelisme sejati dalam sistem multi-core.
Paralelisme ini dicapai dengan mendistribusikan beban kerja aplikasi ke beberapa thread. Setiap LWP (Low Workload Processor) dapat berjalan pada inti prosesor yang berbeda , memungkinkan program untuk memanfaatkan semua inti yang tersedia. Karena biaya pembuatan dan peralihan LWP rendah, Linux sangat efisien dalam menjalankan sejumlah besar thread, asalkan batasan sistem dipatuhi.
Batasan proses dan thread di Linux
Seperti halnya sistem operasi lainnya, terdapat jumlah maksimum tugas yang dapat ditangani kernel secara bersamaan. Di Linux, jumlah tersebut adalah... Batasan proses dan thread diungkapkan sebagai parameter kernel di dalam sistem berkas semu /proc, di rute /proc/sys/kernel/.
Batas global jumlah thread yang dapat didukung oleh kernel disimpan dalam file tersebut. /proc/sys/kernel/threads-maxJika Anda memeriksa isi file tersebut dengan cat o sysctlAnda akan mendapatkan jumlah LWP maksimum yang mampu dibuat oleh sistem sebelum menolak untuk meluncurkan tugas lebih lanjut.
Nilai ini biasanya cukup tinggi pada server modern dengan banyak core dan RAM yang melimpah, sedangkan pada mesin sederhana atau mesin virtual kecil , Anda mungkin menemukan angka yang lebih rendah. Jika batas ini tercapai dan tidak ada proses yang dihentikan, kernel tidak akan dapat membuat proses atau thread baru, yang dapat menyebabkan kesalahan saat meluncurkan layanan atau perintah.
Ada batasan penting lainnya dalam /proc/sys/kernel/pid_maxIni menunjukkan ID proses maksimum yang dapat ditetapkan. Nilai ini juga berfungsi sebagai batasan jumlah proses (dan secara tidak langsung, thread) yang dapat berjalan bersamaan, karena Linux memperlakukan keduanya secara terpadu. Ketika penghitung PID mencapai maksimum ini, ia akan mulai lagi dari bawah, dan seringkali terlihat PID yang "berulang". el tiempotetapi termasuk dalam proses yang sama sekali berbeda.
Menghitung jumlah thread maksimum dan menyesuaikan stack.
Jumlah LWP (Low Work Processing) sebenarnya yang dapat Anda miliki pada sistem Linux tidak hanya bergantung pada parameter kernel tersebut, tetapi juga pada memori virtual yang tersedia dan ukuran tumpukan (stack size) setiap thread . Rumus perkiraan yang umum digunakan adalah:
Jumlah thread maksimum ≈ memori virtual / (ukuran stack × 1024 × 1024)
Dalam ekspresi tersebut, ukuran tumpukan per thread biasanya ditanyakan dengan perintah ulimit -sNilai ini menunjukkan berapa kilobyte memori yang dicadangkan untuk tumpukan (stack) setiap LWP yang dibuat. Ukuran tumpukan yang lebih besar memberikan perlindungan yang lebih besar terhadap luapan (overflow), tetapi juga Anda akan dapat memiliki lebih sedikit thread simultan. untuk jumlah memori yang sama.
Jika Anda perlu menjalankan aplikasi dengan ribuan atau puluhan ribu thread, ini mungkin menarik bagi Anda. mengurangi ukuran tumpukan per thread dengan menggunakan lagi ulimit (misalnya dalam naskah) boot atau layanan sistem), selama kode aplikasi tidak memerlukan tumpukan yang sangat besar.
Singkatnya, jumlah LWP (Low Work Processor) di Linux dibatasi oleh parameter kernel (threads-max, pid_max), ukuran stack per thread, dan total memori yang tersedia . Dengan menyesuaikan faktor-faktor ini secara cermat, Anda dapat meningkatkan jumlah thread yang berjalan bersamaan tanpa mengorbankan stabilitas sistem.
Perintah dasar untuk mendaftarkan proses dan LWP.
Untuk mulai bekerja dengan proses dan thread di Linux, alat klasik yang digunakan adalah perintah `ls --process`. psyang menunjukkan status proses Ini adalah cuplikan pada waktu tertentu (bukan waktu nyata). Tidak seperti monitor grafis, outputnya statis: jika Anda menginginkan informasi terbaru, Anda cukup memulai ulang perangkat.
dengan ps tidak ada pilihan Anda hanya akan melihat proses yang terkait dengan shell saat ini. Untuk mendapatkan semua proses sistemtermasuk mereka yang tidak memiliki terminal terkait, hal yang biasa digunakan adalah:
ps aux
Dalam output tersebut, Anda akan melihat, di antara data lainnya, pengguna pemilik, PID, persentase penggunaan CPU dan RAM, waktu eksekusi, dan perintah yang digunakan untuk menjalankan setiap proses. Ini adalah banyak informasi, tetapi sangat penting untuk menemukan tugas-tugas yang mengonsumsi banyak sumber daya mesin.
Beberapa kombinasi yang berguna dari ps Untuk memiliki kendali lebih besar atas apa yang muncul, berikut ini digunakan:
ps -eops -A: menampilkan semua proses aktif dalam format umum UNIX.ps -u nombre_usuario: hanya menampilkan proses dari pengguna tertentu.ps -axjf: menampilkan output dalam format hierarkis, menempatkan proses anak di bawah proses induknya.ps -C nombre_proceso: memfilter berdasarkan nama perintah dan menyertakan proses anak yang terkait.
Pilihan umum lainnya adalah menggunakan ps aux | grep patrón untuk hanya menyimpan proses yang berisi teks tersebut, misalnya daemon web, mesin basis data, atau naskah Secara spesifik, ini adalah cara yang sangat praktis untuk menemukan apa yang Anda cari sekilas tanpa tersesat di antara halaman-halaman hasil pencarian.
Pemantauan waktu nyata dengan top dan htop
Saat Anda perlu melihat bagaimana proses berubah secara real-time, perintah bintang adalah top, yang menampilkan monitor dinamis dari aktivitas sistem. Tidak seperti psOutput terus diperbarui, menampilkan penggunaan CPU, penggunaan memori, beban rata-rata, jumlah tugas aktif, dan daftar proses yang terurut.
Hanya dengan berlari topAnda akan melihat proses yang diurutkan berdasarkan penggunaan CPU. Anda dapat Mengurutkan ulang berdasarkan bidang lain, memfilter, menghentikan proses, atau mengubah prioritas. dengan menekan tombol yang berbeda di dalam antarmuka itu sendiri (kombinasi tombol mungkin sedikit berbeda tergantung pada versinya, tetapi biasanya ditunjukkan di bagian bawah).
Cara umum untuk memfokuskan pada proses yang paling berat adalah dengan menggunakan perintah seperti:
top -o %CPU
Dengan cara ini, Anda menempatkan proses yang paling banyak mengonsumsi CPU di bagian atas , yang sangat berguna ketika sesuatu mulai menyebabkan lonjakan penggunaan prosesor dan Anda ingin menemukan penyebabnya dengan cepat.
Jika Anda lebih menyukai sesuatu yang lebih visual, Anda dapat menginstal htop, versi top yang lebih baik dengan antarmuka interaktifBar warna dan navigasi keyboard dan mouse. Pada banyak distribusi, Anda harus menginstalnya terlebih dahulu menggunakan pengelola paket, misalnya:
sudo apt-get install htop
Setelah terinstal, Anda menjalankan htop dan Anda akan memiliki tampilan berkode warna dari beban per inti, memori, swap, dan tabel proses tempat Anda dapat Gulir secara vertikal dan horizontal, filter berdasarkan pengguna, ubah prioritas, atau hentikan proses tanpa mengetik PID secara manual..
Pemantauan sumber daya dengan atop
Untuk analisis performa yang lebih mendalam, terutama pada server, tersedia alat ini. atopyang mencatat dan menampilkan aktivitas semua proses. dengan tingkat detail yang tinggi. Ini adalah utilitas layar penuh berbasis teks yang berfokus pada evolusi beban dan penggunaan sumber daya dari waktu ke waktu.
Saat kamu melempar atopAnda akan melihat statistik tentang CPU, memori, swap, disk, dan jaringan yang biasanya diperbarui setiap 10 detik. Selain itu, sistem ini dapat tetap aktif di latar belakang selama berhari-hari, menyimpan riwayat yang dapat Anda tinjau nanti untuk menganalisis masalah yang terjadi di masa lalu.
Di antara keunggulannya adalah kemampuan untuk mengelompokkan konsumsi berdasarkan pengguna atau nama proses , menyoroti dengan warna merah sumber daya penting yang hampir habis, menampilkan proses yang telah selesai tetapi masih relevan dalam log, dan memantau thread internal (LWP) di dalam setiap proses.
Di banyak distribusi Linux, perangkat lunak ini diinstal dengan paket khusus ; misalnya:
sudo apt install atop
sudo dnf install atop
Setelah instalasi, cukup jalankan atop untuk mulai melihat pada tingkat proses konsumsi CPU, memori, disk, dan jaringan, dan dengan demikian dapat mendeteksi dengan akurasi yang cukup tinggi komponen mana yang membebani sistem.
Cara melihat jumlah thread (LWP) per proses
Jika yang Anda minati adalah mengetahui berapa banyak Benang ringan memiliki proses khusus.Linux menawarkan beberapa cara untuk mendapatkan informasi ini. Cara pertama melibatkan pemeriksaan sistem pseudo-file. /proc, di mana kernel mengekspos data internal untuk setiap tugas.
Dalam /proc/<PID>/ Anda akan menemukan file tersebut status, yang mencakup bidang ThreadsDengan membaca file tersebut, Anda dapat dengan cepat melihat berapa banyak LWP yang telah dibuat oleh proses dengan PID tertentu, beserta banyak detail lainnya seperti status, konsumsi memori, dan kemampuan.
Cara lain menggunakan /proc Ini tentang melihat isi direktori. /proc/<PID>/task/Dalam jalur ini, kernel membuat subdirektori untuk setiap thread yang termasuk dalam proses tersebut. Jadi, jumlah direktori di dalam task sesuai dengan jumlah thread. Kamu bisa memakai ls dikombinasikan dengan wc untuk melakukan penghitungan secara otomatis.
Selain pendekatan dengan /proc, perintah itu sendiri ps dapat mengembalikan informasi pada tingkat thread.Menggunakan opsi -H Anda memasuki "mode berulir", dan dengan -p Anda memfilter berdasarkan PID tertentu. Jika Anda menambahkan -h Anda menghindari tanjung, yang memudahkan untuk mengarahkan aliran ke arah yang diinginkan. wc dan memperoleh jumlah baris, yaitu jumlah LWP yang terdaftar untuk proses tersebut.
Dalam semua metode ini, jika Anda menerapkannya pada PID yang sama, Jumlah benang harus sama: bidang Threads dari status, jumlah subdirektori di task dan garis start dari ps Dalam mode thread, keduanya seharusnya memberikan angka yang sama, kecuali sedikit variasi jika proses tersebut sedang membuat atau menghancurkan thread pada saat itu juga.
Memfilter dan mencari proses dengan pgrep dan grep
Ketika ada ratusan atau ribuan proses yang berjalan di mesin, menemukan proses yang Anda minati dengan cara menggulir adalah buang-buang waktu. Di sinilah fitur ini berguna. pgrep, yang mencari proses berdasarkan nama atau pola dan langsung mengembalikan PID yang sesuai.
Dengan sederhana pgrep apache Anda akan melihat di layar pengidentifikasi semua proses yang namanya menyertakan teks tersebut. Dan jika Anda perlu mempersempit pencarian lebih lanjut, Anda dapat menggabungkan pgrep dengan filter penggunaMisalnya, dengan opsi -u untuk membatasi pencarian pada proses dari akun tertentu.
Taktik lain yang umum digunakan adalah mengandalkan grep untuk menyaring keluaran dari psPerintah yang umum digunakan mungkin adalah... ps aux | grep apache, yang hanya akan menampilkan baris proses yang berisi kata "apache", beserta PID, sumber daya, dan perintah lengkapnya.
Perlu diingat bahwa jenis perpipaan ini menambahkan proses tambahan (seperti proses itu sendiri). grep atau wc) ke dalam daftar, jadi ketika Anda melakukan hal-hal seperti ps r | wc -l Penghitung bertambah berdasarkan baris header dan proses yang merupakan bagian dari pipeline itu sendiri. Penting untuk menafsirkan hasil ini dengan benar untuk menghindari kejutan terkait jumlah total tugas.
Secara umum, menguasai ps + grep, pgrep, dan opsi penyaringan memungkinkan Anda untuk fokus pada hal yang Anda minati tanpa kewalahan oleh proses sistem yang, sebagian besar waktu, dapat Anda abaikan dalam analisis awal.
Pengendalian dan penyelesaian proses
Mendaftarkan dan memantau proses memang bagus, tetapi seringkali yang Anda butuhkan adalah menghentikan tugas-tugas bermasalah atau memantau statusnya untuk membebaskan sumber daya atau memulihkan stabilitas sistem. Linux menawarkan beberapa alat yang mudah digunakan untuk hal ini.
Yang paling terkenal adalah kill, yang mengirimkan sinyal ke proses yang diidentifikasi berdasarkan PID-nyaJika Anda tidak menentukan sinyal, sinyal SIGTERM akan dikirim, meminta proses untuk dihentikan secara tertib. Jika proses menolak, Anda dapat menggunakan sinyal SIGKILL (opsi -9), yang memaksa proses untuk segera berakhir tanpa memberikan opsi untuk membersihkan sumber daya.
Jika Anda tidak ingin mengumpulkan PID satu per satu, Anda memiliki pkill y killall, yang beroperasi dengan nama. Dengan pkill firefox Anda akan menghentikan semua proses yang namanya cocok dengan "firefox" untuk pengguna Anda, sementara killall Serangan ini cenderung lebih agresif dan dapat memengaruhi semua instance program pada sistem, termasuk milik pengguna lain, tergantung pada izin akses.
Memahami cara kerjanya juga sangat bermanfaat. fg y bg untuk bermain-main dengan proses latar depan dan latar belakangSaat menangguhkan tugas dengan Ctrl+Z lalu menggunakan bgAnda mengirimkannya ke latar belakang sehingga terus berjalan sementara Anda memulihkan terminal. Jika Anda kemudian perlu berinteraksi dengannya lagi, fg mengembalikannya ke sorotan publik.
Terakhir, ketika Anda ingin menjalankan sesuatu yang terus berjalan bahkan setelah Anda keluar, Anda dapat menggabungkannya. nohup dengan mengirimkannya ke latar belakang, sebagai contoh nohup script.sh &Dengan cara ini, proses tidak akan terhenti meskipun Anda menutup terminal atau koneksi terputus. SSHIni sangat berguna untuk tugas-tugas yang berdurasi panjang. Jika Anda lebih suka menjadwalkannya, lihat cara menjadwalkan tugas dengan cron dan at.
Menetapkan prioritas dengan nice dan renice
Dalam sistem multi-pengguna atau sistem dengan banyak tugas bersamaan, tidak cukup hanya mengetahui berapa banyak proses atau LWP yang ada; penting juga untuk mengetahui berapa banyak proses atau LWP yang ada. Menentukan proses mana yang diprioritaskan dalam penggunaan CPU.Di situlah perintah-perintah tersebut berperan. nice y renice.
Saat Anda memulai suatu proses dengan nice -n valor comando Anda sedang mengatur prioritas relatifnya. Rentang tipikalnya adalah dari -20 (prioritas tertinggi) hingga 19 (prioritas terendah), dengan 0 sebagai nilai default. Nilai nice yang lebih tinggi berarti proses akan lebih mempertimbangkan dan memberikan waktu CPU kepada proses lain saat bersaing memperebutkan sumber daya.
Misalnya, jika Anda memiliki skrip yang membutuhkan banyak sumber daya tetapi tidak mendesak, namun Anda ingin skrip tersebut berjalan di latar belakang tanpa mengganggu, Anda dapat menjalankannya dengan nice -n 10 ./script.shHal ini memberikan prioritas rendah agar tidak memonopoli prosesor saat proses interaktif lainnya sedang berjalan.
Jika alih-alih menyesuaikan prioritas saat startup, Anda perlu mengubah prioritas proses yang sudah berjalan, Kau gunakan reniceDengan sesuatu seperti renice -n 5 -p PID Anda mengubah nilai "nice" dari proses dengan PID tersebut, menyesuaikannya dengan kebutuhan saat ini (menaikkan atau menurunkan prioritasnya).
Mengelola prioritas dengan benar menggunakan nice dan renice membantu mencegah satu proses atau sekumpulan thread membebani responsivitas sistem, terutama pada server bersama atau lingkungan produksi dengan banyak beban simultan.
Alat canggih untuk men-debug dan menganalisis proses.
Ketika suatu proses atau salah satu LWP-nya berperilaku aneh, mengalami crash, atau tampaknya membekukan sistem, seringkali diperlukan alat diagnostik yang lebih canggih. Salah satu yang paling ampuh adalah straceyang memungkinkan Anda memantau panggilan sistem yang dilakukan oleh suatu proses secara real-time. Untuk kesalahan kernel yang lebih mendalam, ada panduan tentang gunakan crash dan kdump.
Dengan perintah seperti strace -p PID Anda mungkin untuk terlibat dalam proses yang sudah berjalan dan melihat panggilan sistem apa yang dilakukannya (pembacaan file, penulisan, operasi jaringan, sinyal, dll.). Ini sangat berguna untuk mencari tahu mengapa suatu proses menunggu "sesuatu": mungkin proses tersebut terblokir karena mencoba membuka file yang tidak ada, menunggu soket, atau macet karena izin yang tidak mencukupi.
Alat diagnostik klasik lainnya adalah lsof (Daftar File yang Terbuka)Alat ini menampilkan file yang dibuka oleh setiap proses, termasuk file disk, soket jaringan, perangkat, dan banyak lagi. Alat ini sangat berguna untuk mendeteksi proses mana yang menggunakan port tertentu, layanan mana yang mengunci file, atau tugas mana yang membaca log tertentu.
Melengkapi lsof, fuser Ini memberi tahu Anda proses mana yang menggunakan file atau port tertentu. Secara spesifik, misalnya, dengan perintah pada port TCP Anda dapat dengan cepat mengetahui daemon mana yang sedang mendengarkan pada nomor tersebut dan bertindak sesuai dengan itu, baik dengan mengkonfigurasinya ulang atau menghentikannya.
Untuk membawa analisis kinerja selangkah lebih maju, Anda memiliki pidstatyang menawarkan statistik terperinci dari CPU, memori, dan I/O per proses, dan dengan watchyang memungkinkan Anda untuk secara berkala menjalankan perintah seperti ps -e o netstat untuk mengamati di layar bagaimana proses atau koneksi berkembang dari waktu ke waktu.
Manajemen layanan dan status sistem secara keseluruhan
Banyak proses penting di Linux sebenarnya layanan atau daemon yang berjalan di latar belakang, seperti server web, database atau penjadwal tugas. Dalam sistem modern dengan systemd, alat utama untuk mengelola layanan ini adalah systemctl.
dengan systemctl start nombre_servicio Anda dapat memulai sebuah layanan, sementara systemctl stop, restart y status Anda dapat menghentikannya, memulai ulang, atau melihat statusnya saat ini. Anda juga dapat mengaktifkan atau menonaktifkan pengaktifan otomatisnya saat sistem dinyalakan, yang secara langsung memengaruhi proses mana yang muncul dalam daftar setelah reboot.
Pada distribusi atau konfigurasi lama yang masih menggunakan SysVinit, perintah berikut sering ditemukan: service untuk mengelola layanan. Meskipun dalam banyak kasus telah digantikan oleh systemd, ia masih berguna sebagai lapisan kompatibilitas untuk memulai, menghentikan, atau memulai ulang daemon tertentu.
Selain layanan yang ditawarkan, ini juga layak dimiliki. pandangan global tentang keadaan sistem. Perintah uptime Ini menunjukkan berapa lama mesin telah menyala, berapa banyak pengguna yang terhubung, dan beban rata-rata terkini, memberikan gambaran cepat tentang apakah sistem dalam kondisi nyaman atau kelebihan beban.
Untuk analisis kinerja yang lebih rinci, vmstat Ini memberikan statistik tentang CPU, memori, proses, dan swap.Sementara iostat Ini berfokus pada input/output disk, menampilkan pembacaan, penulisan, dan waktu respons perangkat. penyimpananAlat-alat ini sangat berharga untuk mendeteksi apakah masalah berasal dari CPU, RAM, disk, atau kombinasi dari semuanya.
Dengan menggabungkan semua hal di atas—mencantumkan proses dan LWP dengan ps dan /proc, pemantauan waktu nyata dengan top, htop atau atop, penyaringan dengan pgrep, kontrol dengan kill dan penyetelan dengan nice, bersama dengan utilitas diagnostik seperti strace dan lsof—dimungkinkan untuk memahami dan mengontrol dengan sangat tepat apa yang terjadi pada sistem Linux pada waktu tertentu, mengidentifikasi proses dan thread yang bermasalah, dan menjaga kinerja tetap terkendali bahkan di lingkungan yang menuntut.
Penulis yang bersemangat tentang dunia byte dan teknologi secara umum. Saya suka berbagi ilmu melalui tulisan, dan itulah yang akan saya lakukan di blog ini, menunjukkan kepada Anda semua hal paling menarik tentang gadget, perangkat lunak, perangkat keras, tren teknologi, dan banyak lagi. Tujuan saya adalah membantu Anda menavigasi dunia digital dengan cara yang sederhana dan menghibur.