Bagaimana 'macet' (dalam hasil 'top') berhubungan dengan 'tidak merespons' (di Activity Monitor), 'spin' atau 'hang'?

17

Dalam hasil topperintah, kadang-kadang saya melihat macet .

Halaman Manual OS X Apple (1) tidak menjelaskan penggunaan kata ini.

Bagaimana, jika itu semua, macet terkait dengan yang berikut ini?

  1. tidak merespons - dapat dilihat di Activity Monitor, dalam dialog Force Quit Applications dari loginwindow, dan sebagainya
  2. .hang file - dapat hadir di /Library/Logs/DiagnosticReports
  3. .spin file - dapat hadir di /Library/Logs/DiagnosticReports

Ada jawaban yang diterima untuk poin pertama. Jawaban yang berkaitan dengan poin 2 dan 3 akan dihargai.

Graham Perrin
sumber

Jawaban:

15

Biasanya tidak ada korelasi antara proses macettop dan aplikasi yang tidak merespons:

  • macet berarti bahwa proses saat ini un-interruptible yang biasanya terjadi jika proses menunggu disk atau blok data jaringan untuk dibaca (atau hal-hal tingkat rendah serupa). Secara teknis proses ini dijalankan dalam ruang kernel (alias kernel Unix) dan tidak dapat terganggu (bahkan kill -9tidak akan berdampak apa pun). Biasanya status macet ini hanya bertahan dalam milidetik (seperti yang dapat Anda lihat topjuga karena jumlah proses macet berubah dengan setiap siklus tampilan).
  • aplikasi yang tidak merespons dapat menjadi terlalu sibuk untuk membalas setiap peristiwa yang dilontarkan OS X.

Saya melihat satu situasi di mana proses macet terkait dengan aplikasi yang tidak merespons: Suatu proses dapat macet untuk waktu yang sangat lama, mungkin macet tanpa henti, tanpa ada kemungkinan untuk membunuhnya. Ini biasanya merupakan hasil dari beberapa kesalahan pemrograman, mis. Pemutusan yang tidak tepat dari perangkat jaringan maka kernel terus mencoba membaca dari itu. Dalam kasus seperti ini bahkan pemutusan paksa tidak akan menghapus proses.

nohillside
sumber
Terima kasih - jika macet identik dengan tidak terputus , maka saya akrab dengan keadaan itu. uninterruptibleumumnya terlihat ketika saya tombol Control-T ( SIGINFO ) sementara berjalan fsck_hfsdari baris perintah. Lebih lanjut tentang SIGINFOdi Apple termios (4) OS X Pedoman Halaman .
Graham Perrin
Terkait dengan jawaban ini, sebuah pertanyaan dalam Stack Overflow mungkin menarik: Bagaimana mengidentifikasi tidak merespons proses secara programatik .
Graham Perrin
2
Saya telah melihat kode sumber atas: tidak terputus sama dengan macet.
nohillside
Gotcha - highlight dari libtop.c dalam open source untuk Mac OS X 10.7.4.
Graham Perrin
1

Status proses U, TH_STATE_UNINTERRUPTIBLE dan status proses Linux D

Orang lain menarik perhatian ke atas MacOS: "macet" berarti "tidak terputus" | nelsonslog

...  TH_STATE_UNINTERRUPTIBLE, yang saya percaya adalah apa yang psdilaporkan sebagai proses menyatakan "U". Saya menduga inilah yang disebut Linux "D" untuk "Device Wait". Dalam hal ini, dalam kebanyakan kasus prosesnya baik-baik saja, menunggu beberapa I / O untuk menyelesaikan. ...

The man page Ubuntu untuk ps menegaskan kode negara proses -

D    Uninterruptible sleep (usually IO)

- Tanpa menyebutkan yang tidak terputus .

Dalam Referensi Silang FreeBSD / Linux Linux:

Saya menemukan diskusi tahun 2002 The Answer Gang 83: Bagaimana cara membunuh proses dalam keadaan tidur tanpa gangguan? ( Sorotan ) yang cocok dengan pengamatan yang dilakukan oleh @patrix.

Last but not least, sebuah postingan 2004 [X-Unix] PS dan Stuck Processes ( highlight ) menyebutkan WindowServer , yang cocok dengan pertanyaan terkait yang mendorong saya untuk mengirim pertanyaan di sini:

Graham Perrin
sumber