Προς το περιεχόμενο

Memory bottleneck


eliascm21

Προτεινόμενες αναρτήσεις

Δημοσ.

Χρειάζομαι ένα πρόγραμμα που να μου λέει αν ένα πρόγραμμα τρώει bottleneck λόγω μνήμης. Δηλαδή αν χρησιμοποιεί τόσο πολύ την μνήμη ώστε το πρόγραμμα να πηγαίνει αργά λόγω αυτής. Υπάρχει τέτοιο πρόγραμμα;

Έχω δει διάφορα diagnostics tools που κυκλοφορούν αλλά δεν έχω δει κάτι σχετικό με αυτό που θέλω..

 

Βασικά το πρόγραμμα που θέλω να τεστάρω το έχω φτιάξει εγώ, και χρησιμοποιεί το OPENMP για να εκμεταλευτεί τους πολλαπλούς πυρήνες ενός επεξεργαστή. Επειδή η επιτάχυνση που παίρνω δεν είναι η ικανοποιητική θέλω να δω αν ευθύνεται η μνήμη ή όχι. Υπάρχει τρόπος να το δω αυτό;

 

 

Ευχαριστώ

Δημοσ.

Ένας τρόπος που μπορώ να σκεφτώ είναι να χρησιμοποιήσεις είτε το Intel Vtune είτε το PAPI για να πάρεις μετρήσεις από τους performance counters του επεξεργαστή.

 

Η μετρική που κατά βάση σε ενδιαφέρει είναι τo bus utilization ratio, δηλαδή BUS_TRANS_ANY.ALL_AGENTS * 2 / CPU_CLK_UNHALTED.BUS.

 

Η ιδανική τιμή είναι 0, οτιδήποτε πάνω από 0.6 μπορεί να δείχνει πρόβλημα

Δημοσ.
Ένας τρόπος που μπορώ να σκεφτώ είναι να χρησιμοποιήσεις είτε το Intel Vtune είτε το PAPI για να πάρεις μετρήσεις από τους performance counters του επεξεργαστή.

 

Η μετρική που κατά βάση σε ενδιαφέρει είναι τo bus utilization ratio, δηλαδή BUS_TRANS_ANY.ALL_AGENTS * 2 / CPU_CLK_UNHALTED.BUS.

 

Η ιδανική τιμή είναι 0, οτιδήποτε πάνω από 0.6 μπορεί να δείχνει πρόβλημα

 

Εγκατέστησα το Vtune, αλλά επειδή πρώτη φορά χρησιμοποιώ τέτοιου είδους εργαλεία θα ήθελα μια μικρή επιπλέον βοήθεια.

Το πρόγραμμα το έχω κάνει με intel fortran μέσα από το .NET 2003. Όταν εγκατέστησα το Vtune μου προστέθηκε στο .NET studio και η σχετική μπάρα.

 

Εκεί βλέπω την επιλογή Configure available ratios όπου βρήκα και το bus utilization ratio που μάλλον είναι αυτό που χρειάζομαι.

 

Πως όμως βλέπω τις τιμές αυτών των ratios? Όπως και να τρέξω το πρόγραμμα μέσα από το Vtune, δεν βλέπω κάπου να μου δίνει πληροφορίες για αυτά.

 

Please help... Ευχαριστώ!

Δημοσ.

Θα πρέπει να δημιουργήσεις ένα νέο activity (sampling). Στο configuration του activity θα πρέπει να διαλέξεις τα events που συμμετέχουν στον υπολογισμό του συγκεκριμένου performance ratio. Κατόπιν τρέχεις το activity (ενδεχομένως όλα τα παραπάνω να τα έχεις κάνει ήδη).

 

Αφού τελειώσει το τρέξιμο, στην αριστερή μπάρα στο παράθυρο θα πρέπει να βλέπεις ένα entry για το activity που έτρεξες. Το επιλέγεις. Στην κεντρική οθόνη θα πρέπει πλέον να βλέπεις τα προγράμματα που υπήρχαν στο σύστημα την ώρα που έτρεχε το activity (μαζί με αυτά και το δικό σου) και τα metrics που έχουν συλλεγεί για το καθένα. Ίσως χρειαστεί να κάνεις scroll προς τα δεξιά για να φτάσεις στη μετρική που σε ενδιαφέρει. Επίσης, κάνοντας double-click πάνω στο πρόγραμμά σου σε αυτή την οθόνη θα δεις τα αντίστοιχα δεδομένα σε επίπεδο thread, συνάρτησης, γραμμής κώδικα και έως και εντολής assembly.

 

EDIT: Έχω εμπειρία από το VTune σε Linux, οπότε σε .ΝΕΤ ίσως υπάρχουν κάποιες μικροδιαφορές.

Δημοσ.
Θα πρέπει να δημιουργήσεις ένα νέο activity (sampling). Στο configuration του activity θα πρέπει να διαλέξεις τα events που συμμετέχουν στον υπολογισμό του συγκεκριμένου performance ratio.

Νομίζω ότι στην επιλογή των events είναι που κάτι δεν κάνω καλά. Θα πρέπει να βρω το bus utilization ratio που μου είπες, ή το BUS_TRANS_ANY.ALL_AGENTS και CPU_CLK_UNHALTED.BUS από τα οποία υπολογίζεται; Πάντως τίποτα από αυτά δεν βρίσκω :-(

 

Έχω ανεβάσει κάποια screenshot, αν μπορείς να με βοηθήσεις γιατί οι επιλογές μου φαίνονται άπειρες.

Στην πρώτη photo πατάω configuration και μετά σου έχω τα tabs του παραθύρου που εμφανίζεται γιατί υποθέτω κάπου εκεί πρέπει να κάνω την επιλογή που πρέπει.

 

http://img27.imageshack.us/i/97443590.jpg/

http://img442.imageshack.us/i/98151793.jpg/

http://img14.imageshack.us/i/19115745.jpg/

http://img130.imageshack.us/i/32716219.jpg/

 

Μήπως το bus utilization ratio βγαίνει στον πίνακα αποτελεσμάτων με διαφορετικό όνομα; Υπάρχουν και άλλες παρόμοιες μεταβλητές που μπορώ να κοιτάξω για να δω αν έχω πρόβλημα στο bus;

Δημοσ.

Μπορεί να είναι διαφορετικό το όνομα. Πέραν των άλλων, το τι ακριβώς events υποστηρίζονται εξαρτάται από τον επεξεργαστή σου.

 

Στη photo:

http://img442.imageshack.us/i/98151793.jpg/

 

φαίνεται να έχεις ανακαλύψει τα bus ratios. Ποιο είναι το ratio που φάινεται;

 

Πάντως επειδή όντως τα events και τα ratios είναι άπειρα και τα ονόματά τους είναι cryptic, να ξέρεις ότι το VTune έχει πολύ καλό help όπου εξηγεί όλα τα events, τα ratios και το τι σημαίνουν (για άλλα events χειρότερα, για άλλα καλύτερα), για καθένα από τους υποστηριζόμενους επεξεργαστές.

Δημοσ.

Μάλλον είναι αυτό που είπες, το ratio που θέλω δεν υποστηρίζεται από τον επεξεργαστή. Επέλεξα διάφορα groups αλλά δεν μπόρεσα να βρω τον λόγο που μου είπες.

Το μόνο ratio που μου φαίνεται σχετικό είναι το Bus Accesses from the processor το οποίο μου υπολογίζεται ίσο με 66.18%. Η εξήγηση που δίνει για τον λόγο αυτό είναι:

 

 

Bus Accesses (This Processor)

Thread Specificity: AT-E FSB_CR_ESCR0

 

The number of all bus transactions that were allocated in the input/output (IO) queue from the processor core, including prefetch transactions.

 

Note

Beware of granularity issues with this event.

 

 

τον οποίο ομολογώ ότι δεν πολύ καταλαβαίνω :-(

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...