Saya dapat menebak berdasarkan nama-nama, tetapi apa yang secara spesifik adalah jam dinding, waktu pengguna, dan waktu sistem di UNIX?
Apakah waktu pengguna-cpu jumlah waktu yang dihabiskan untuk mengeksekusi kode-pengguna sementara waktu kernel-cpu jumlah waktu yang dihabiskan dalam kernel karena kebutuhan operasi istimewa (seperti IO ke disk)?
Unit waktu pengukuran ini di.
Dan apakah jam dinding benar-benar jumlah detik proses yang dihabiskan untuk CPU atau apakah namanya hanya menyesatkan?
unix
operating-system
John Humphreys - w00te
sumber
sumber
Jawaban:
Waktu jam dinding adalah waktu yang diukur oleh jam di dinding (atau stopwatch di tangan) telah berlalu antara awal proses dan 'sekarang'.
Waktu pengguna-CPU dan waktu sistem-CPU cukup banyak seperti yang Anda katakan - jumlah waktu yang dihabiskan dalam kode pengguna dan jumlah waktu yang dihabiskan dalam kode kernel.
Satuannya adalah detik (dan subsekon, yang mungkin berupa mikrodetik atau nanodetik).
Waktu jam dinding bukan jumlah detik yang dihabiskan proses pada CPU; ini adalah waktu yang telah berlalu, termasuk waktu yang dihabiskan menunggu gilirannya pada CPU (sementara proses lain bisa dijalankan).
sumber
CPUtime = #clock_cycles / clock_rate
tidak bisa sama dengan menghitung waktu yang telah berlalu. Apakah Anda tahu jika saya bisa mendapatkan waktu yang telah berlalu dari waktu CPU?read()
ataugetpid()
), kernel mengeksekusi kode atas nama program Anda. Kernel juga menangani pre-emptive multi-tasking sehingga program lain dapat menjalankannya, dan melakukan beberapa pekerjaan rumah tangga umum untuk menjaga sistem berjalan dengan lancar. Kode ini dieksekusi dalam 'kode kernel' (juga dalam 'mode kernel'). Ini berbeda dari kode yang Anda tulis, dan pustaka pengguna (termasuk pustaka sistem C) yang Anda jalankan.Jam dinding waktu: waktu berlalu sesuai dengan jam internal komputer, yang harus cocok dengan waktu di dunia luar. Ini tidak ada hubungannya dengan penggunaan CPU; itu diberikan untuk referensi.
Waktu CPU pengguna dan waktu sistem: persis apa yang Anda pikirkan. Panggilan sistem, yang meliputi I / O panggilan seperti
read
,write
, dll dijalankan oleh melompat ke dalam kode kernel dan melaksanakan itu.Jika jam dinding <waktu CPU, maka Anda menjalankan program secara paralel. Jika waktu jam dinding> waktu CPU, Anda sedang menunggu disk, jaringan atau perangkat lain.
Semua diukur dalam hitungan detik, per SI .
sumber
Waktu jam dinding persis seperti yang tertulis, waktu yang berlalu yang diukur dengan jam di dinding Anda (atau jam tangan)
Waktu cpu pengguna adalah waktu yang dihabiskan di "lahan pengguna", yaitu waktu yang dihabiskan untuk proses non-kernel
Waktu cpu sistem adalah waktu yang dihabiskan di kernel, biasanya waktu yang dihabiskan untuk melayani panggilan sistem.
sumber
nyata atau jam dinding
7m2.444 nyata
Pada sistem dengan prosesor 24 inti, proses cmd / ini memakan waktu 7+ menit untuk menyelesaikannya. Itu dengan memanfaatkan paralelisme yang paling mungkin dengan semua core yang diberikan.
pengguna
pengguna 76m14.607s
Cmd / proses telah menggunakan banyak waktu cpu. Dengan kata lain, pada mesin dengan CPU single core, yang asli dan pengguna akan hampir sama, sehingga perintah yang sama akan memakan waktu ~ 76 menit untuk selesai.
sys
sys 2m29.432s
Ini adalah waktu yang dibutuhkan oleh kernel untuk menjalankan semua operasi tingkat dasar / sistem untuk menjalankan cmd ini, termasuk pengalihan konteks, alokasi sumber daya, dll.
sumber
(user + sys) / real
untuk mewakili hal itu.