συστήματα

Γνώση Υπολογιστών >> συστήματα >  >> Unix

Πώς θα γνωρίζετε τον χρόνο που λαμβάνεται από κάθε διαδικασία ή πρόγραμμα στο UNIX;

Υπάρχουν διάφοροι τρόποι μέτρησης του χρόνου που λαμβάνεται από μια διαδικασία ή πρόγραμμα στο UNIX. Ακολουθεί μια ανάλυση των πιο συνηθισμένων μεθόδων και των διακρίσεών τους:

1. Η εντολή `Ώρα ':

* Χρήση: `Ώρα `

* Έξοδος: Εκτυπώνει το πραγματικό (ρολόι τοίχου), ο χρήστης και ο χρόνος του συστήματος που λαμβάνεται από την εντολή.

* Παράδειγμα:

`` `bash

Ώρα ύπνου 5

`` `

2. Κλήσεις συστήματος:

* `clock_gettime ()`: Παίρνει την τρέχουσα ώρα με ακρίβεια νανοδευτερόλεπτα.

* `getRusage ()`: Παρέχει λεπτομερείς πληροφορίες χρήσης πόρων, συμπεριλαμβανομένου του χρήστη, του συστήματος και άλλων φορές.

* `times ()`: Παρόμοια με το `getRusage ()`, αλλά με λιγότερο λεπτομερή παραγωγή.

* Παράδειγμα:

`` `c

#include

#include

#include

int main () {

Struct Timespec Start, τέλος.

clock_gettime (ρολόι_Monotonic, &έναρξη);

// ... Ο κωδικός του προγράμματος ...

clock_gettime (ρολόι_monotonic, &τέλος);

// Υπολογίστε τον χρόνο που παρέμενε

Double Elapsed =(end.tv_sec - start.tv_sec) + (double) (end.tv_nsec - start.tv_nsec) / 1000000000.0;

printf ("Χρόνος που απαιτείται:%.6f δευτερόλεπτα \ n", που έχει περάσει);

// ... getRusage () ή times () για πρόσθετες πληροφορίες χρήσης πόρων ...

επιστροφή 0;

}

`` `

3. Εργαλεία δημιουργίας προφίλ:

* `gprof`: Αναλύει ένα πρόγραμμα για τον εντοπισμό του χρόνου που δαπανάται σε διαφορετικές λειτουργίες.

* `valgrind`: Ένα ισχυρό εργαλείο για την ανίχνευση διαρροής μνήμης και την ανάλυση απόδοσης.

* `perf`: Ένα εργαλείο γραμμής εντολών για την προφίλ απόδοσης.

Κατανόηση των χρόνων:

* πραγματικός χρόνος: Ο συνολικός χρόνος ρολογιού τοίχου που παίρνει το πρόγραμμα για να τρέξει, συμπεριλαμβανομένου του χρόνου που ξοδεύει περιμένοντας I/O, άλλες διαδικασίες κ.λπ.

* Χρόνος χρήστη: Ο χρόνος που το πρόγραμμα ξοδεύει τις οδηγίες εκτέλεσης στη λειτουργία χρήστη (κωδικός του προγράμματος).

* Χρόνος συστήματος: Ο χρόνος που το πρόγραμμα ξοδεύει τις οδηγίες εκτέλεσης σε λειτουργία πυρήνα (λειτουργίες λειτουργικού συστήματος).

Επιλέγοντας τη σωστή μέθοδο:

* για απλή μέτρηση: Η εντολή `Ώρα 'είναι επαρκής.

* για πιο λεπτομερή ανάλυση: Χρησιμοποιήστε κλήσεις συστήματος όπως `Clock_Gettime ()` και `getRusage ()`.

* για σε βάθος προφίλ: Χρησιμοποιήστε εργαλεία προφίλ προφίλ όπως το `gprof`, το` valgrind 'ή το `perf'.

Σημαντικές σημειώσεις:

* Ακρίβεια: Οι μετρήσεις χρόνου μπορούν να επηρεαστούν από παράγοντες όπως το φορτίο του συστήματος και ο προγραμματισμός.

* overhead: Οι μέθοδοι μέτρησης του χρόνου εισάγουν τα γενικά έξοδα, οπότε γνωρίζετε αυτό όταν αναλύετε την απόδοση.

* Μονάδες: Ο χρόνος συχνά μετράται σε δευτερόλεπτα ή νανοδευτερόλεπτα (NS).

Επιτρέψτε μου να ξέρω αν θέλετε μια πιο λεπτομερή εξήγηση για οποιαδήποτε συγκεκριμένη μέθοδο ή να έχετε ένα συγκεκριμένο σενάριο στο μυαλό!

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα