Λειτουργικά συστήματα

Γνώση Υπολογιστών >> Λειτουργικά συστήματα >  >> Unix

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

Δεν υπάρχει μια ενιαία, καθολικά τέλεια εντολή για να αποκτήσετε απευθείας το μέγεθος * ακριβής * σωρού και στοίβας για μια διαδικασία κάτω από συστήματα τύπου Unix. Οι πληροφορίες δεν είναι πάντοτε σταθερά παρακολουθείται με εύκολα προσβάσιμο τρόπο από το λειτουργικό σύστημα. Ωστόσο, μπορείτε να λάβετε προσεγγίσεις και σχετικές πληροφορίες χρησιμοποιώντας διάφορα εργαλεία.

Ακολουθεί μια κατανομή του τρόπου προσέγγισης αυτού, μαζί με εξηγήσεις και περιορισμούς:

1. `/proc/[pid]/status` (πιο χρήσιμο σημείο εκκίνησης):

Αυτό το αρχείο (κάτω από το Linux και παρόμοια συστήματα) παρέχει πληροφορίες κατάστασης διαδικασίας. Τα βασικά πεδία είναι:

* VMRSS: Μέγεθος ρύθμισης κατοίκων - Αυτό δείχνει την ποσότητα RAM που έχει * που έχει * διατεθεί σήμερα * και χρησιμοποιεί ενεργά. Είναι ένας καλός δείκτης πίεσης μνήμης, αλλά δεν διαχωρίζει άμεσα το σωρό και τη στοίβα.

* vmsize: Εικονικό μέγεθος μνήμης - Η συνολική εικονική μνήμη που χρησιμοποιείται από τη διαδικασία (συμπεριλαμβανομένων των κοινόχρηστων βιβλιοθηκών, του κώδικα, του σωρού, της στοίβας κ.λπ.). Και πάλι, δεν είναι ένα άμεσο μέτρο σωρού/στοίβας.

* vmdata: Μέγεθος τμημάτων δεδομένων (που περιλαμβάνει το σωρό)

* vmstk: Μέγεθος του τμήματος στοίβας

Μπορείτε να το χρησιμοποιήσετε έτσι:

`` `bash

CAT/PROC/[PID]/Κατάσταση | grep -i 'vmrss \ | vmsize \ | vmdata \ | vmstk'

`` `

Αντικαταστήστε το `[PID]` με το αναγνωριστικό διαδικασίας της διαδικασίας που θέλετε να εξετάσετε.

Περιορισμοί: Το "VMDATA` περιλαμβάνει περισσότερο από το σωρό, και το" VMSTK` δείχνει μόνο το * αφοσιωμένο * μέγεθος στοίβας, όχι απαραίτητα το μέγιστο επιτρεπόμενο.

2. `PMAP [PID]` (Linux):

Το "PMAP` δείχνει τον χάρτη μνήμης μιας διαδικασίας. Αυτό παρέχει μια πιο λεπτομερή άποψη, αλλά εξακολουθεί να μην επισημαίνει ρητά το Heap και το Stack ξεχωριστά. Θα χρειαστεί να ερμηνεύσετε την έξοδο αναζητώντας περιοχές με την ένδειξη `[HEAP]` και `[Stack]`. Τα μεγέθη που εμφανίζονται είναι σε εικονική μνήμη.

`` `bash

PMAP [PID]

`` `

Περιορισμοί: Η έξοδος μπορεί να είναι αρκετά λεπτομερής και η αναγνώριση του σωρού και της στοίβας απαιτεί οριστικά την κατανόηση της μορφής χάρτη μνήμης.

3. `top` ή` htop` (διαδραστική παρακολούθηση):

Αυτές οι εντολές παρουσιάζουν πληροφορίες διαδικασίας σε πραγματικό χρόνο, συμπεριλαμβανομένης της χρήσης μνήμης (συνήθως ως μέγεθος καθορισμού, RSS). Αν και δεν παρέχουν ξεχωριστούς αριθμούς σωρού/στοίβας, σας δίνουν μια δυναμική άποψη για το αποτύπωμα μνήμης της διαδικασίας.

4. Χρησιμοποιώντας ένα Debugger (GDB):

Εάν έχετε τον πηγαίο κώδικα, ένας εντοπισμός σφαλμάτων όπως το `GDB` μπορεί να παρέχει πολύ πιο ακριβείς πληροφορίες. Μπορείτε να επισυνάψετε σε μια διαδικασία που τρέχει και να επιθεωρήσετε τη χρήση σωρού και στοίβας χρησιμοποιώντας εντολές GDB. Αυτή είναι μια πιο προηγμένη τεχνική και απαιτεί γνώση προγραμματισμού.

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

* Όριο μνήμης RAM 4GB: Η συνολική ποσότητα μνήμης RAM (4GB στην περίπτωσή σας) περιορίζει τη * συνολική * μνήμη που μπορεί να χρησιμοποιήσει μια διαδικασία, αλλά δεν καθορίζει άμεσα μεγέθη σωρού ή στοίβας. Το OS διαχειρίζεται δυναμικά την κατανομή της μνήμης και μια διαδικασία μπορεί να ζητήσει περισσότερα από ό, τι πραγματικά χρησιμοποιεί σε οποιαδήποτε δεδομένη στιγμή.

* εικονική έναντι φυσικής μνήμης: Οι αριθμοί που παίρνετε (εκτός ίσως το `vmrss ') είναι συχνά σε εικονικό χώρο μνήμης. Η πραγματική φυσική μνήμη RAM που χρησιμοποιείται μπορεί να είναι μικρότερη (λόγω της ανταλλαγής και των κοινόχρηστων βιβλιοθηκών).

* Εργαλεία συγκεκριμένου συστήματος: Οι συγκεκριμένες εντολές και η παραγωγή τους ενδέχεται να ποικίλουν ελαφρώς σε διαφορετικά συστήματα που μοιάζουν με UNIX (Linux, BSD, MACOS).

Συνοπτικά, δεν υπάρχει ενιαία εντολή για να λάβετε ακριβή μεγέθη σωρού και στοίβας. Η καλύτερη προσέγγιση συνδυάζει `/proc/[pid]/status` (για μια γρήγορη επισκόπηση) και ενδεχομένως` pmap` (για περισσότερες λεπτομέρειες). Η χρήση ενός εντοπισμού σφαλμάτων είναι το πιο ακριβές, αλλά απαιτεί περισσότερη εμπειρία. Θυμηθείτε ότι οι αριθμοί που αποκτάτε αντιπροσωπεύουν την τρέχουσα χρήση, η οποία μπορεί να κυμαίνεται συνεχώς.

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

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