Αυτό που παρατηρώ τώρα (έχοντας κάνει κάμποσα μπρος πίσω λόγω λαθών στην lock) είναι ότι ακόμα και για 16 πυρήνες και grain size 1 με πλήθος επαναλήψεων (10^8) ώστε το ένα thread να κάνει κάπου στα 6 δευτερόλεπτα ο χρόνος εκτέλεσης φτάνει σε τετραπύρηνο vm την 1 ώρα.Από ότι βλέπω αν πάμε στο grain size 100 ακόμα και να πάει 10 φορές ο χρόνος πρακτικά δεν πρόκειται να τελειώσω σε μια εβδομάδα ενώ αν πάει ο χρόνος επί 100 πρακτικά δεν θα τελειώσουμε ούτε σε 3 εβδομάδες.
Από την μια μπορώ να πάρω 10^6 επαναλήψεις αλλά οι μισές μετρήσεις θα βγούν κάτω από 10 δευτερόλεπτα
ή για τα μεγαλύτερα grain να μειώνω τις επαναλήψεις.
Εκτός και αν δεν έχω εκτιμήσει σωστά τον ρόλο του grain (από ότι κατάλαβα από τον κώδικα απλά μεγαλώνει το critical section άρα έχουμε περισσότερες πράξεις αλλά και περισσότερες προσβάσεις στο κλειδί από τα άλλα νήματα)
Επίσης από ότι βλέπω οι επαναλήψεις που βάζουμε είναι για κάθε νήμα χωριστά (το συμπέρανα και από τα αποτελέσματα του deebug mode).Στις προσομοιώσεις που αυξάνουμε τους πύρινες ταυτόχρονα καταλαβαίνω ότι ζητάμε από δεκαπλάσιο π.χ hardware να εκτελέσει δεκαπλάσια εργασία και θέλουμε να δούμε πόσο χρόνο θα κάνουμε.Στο πραγματικό σύστημα όμως δεν καταλαβαίνω πρακτικά τι ψάχνουμε όταν πηγαίνουμε πάνω από τους επεξεργαστές του συστήματος.
Εδώ είναι και τα μέχρι τώρα αποτελέσματα μου για 10^8 επαναλήψεις με tas σε 1 2 4 8 16 πυρήνες και grain 1
Execution time:5.242893 seconds
Execution time:51.152378 seconds
Execution time:207.640789 seconds
Execution time:924.958131 seconds
Execution time:3806.550578 seconds
Μπορεί να μου δώσει κανείς καμιά ιδέα/συμβουλή:
Ευχαριστώ εκ των προτέρων