iJohnnyCash
e-steki.gr Founder
Ο Panayotis Yannakas αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 34 ετών, επαγγέλεται Επιχειρηματίας και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 24,043 μηνύματα.
27-01-11
03:29
Σε επίπεδο κώδικα (& πυρήνα) έχουν γίνει σημαντικές αλλαγές. Παραθέτω μήνυμα του χρήστη SSB του adslgr.com, είναι πολύ εξειδικευμένο για κάποιον που δεν έχει ουσιαστικές γνώσεις γύρω από την αρχιτεκτονική των υπολογιστών.
Αρχική Δημοσίευση από SSB@adslgr:Αναφορικά με κάποια από τα προηγούμενα posts φίλων, θα ήθελα να προσθέσω κάποιες λεπτομέρεις ελπίζοντας να γίνει καλύτερα κατανοητό το θέμα του performance gain που παρατηρείται στα Windows 7.
Κατ' αρχήν, το performance gain των Windows 7 δεν έχει παρά ελάχιστη σχέση με κάποια "μαζική διαχείριση μνήμης". Αν με τον όρο αυτό, οι φίλοι που τον χρησιμοποίησαν εννοούν το memspace preallocation, τα MEM I/O priorities, το mem copy prevention και τα SF/RB/RD, όλα αυτά αν και έχουν σε μεγάλο βαθμό εξελιχθεί στα Window 7, προυπήρχαν και στα Windows Vista και δεν αποτελούν παρά ελάχιστο βοήθημα στο performance gain των w7. Άλλωστε αν είχαν καταλυτική συμμετοχή στο performance, αυτή θα είχε γίνει εμφανής και στα Vista έναντι των XP, πράγμα που φυσικά δεν συμβαίνει.
Αν και η αύξηση του performance στα w7 είναι αποτέλεσμα πολλών μεγαλύτερης ή μικρότερης σημασίας αλλαγών και προσθηκών, ωστόσο στο μεγαλύτερο βαθμό αυτά που συνεισφέρουν στο performance gain είναι τα παρακάτω.
Όπως ξανασυζητήθηκε στο παρελθόν, κάτι το οποίο επέφερε στα Windows Vista την σημαντικότερη ίσως επίπτωση στο performance, ήταν η κατάργηση του GDI ως accelerated layer και η αντικατάστασή του από GDI/+ -> DX remapped calls. Όλα δηλαδή τα GUI 2D functions ουσιαστικά όχι απλά δεν ήταν accelerated (όπως στα XP) αλλά επιβαρύνονταν από το rendering translation το οποίο και δεν είχε καμμιά βοήθεια από το GPU. Για όσους αναρωτούνται περί της σκοπιμότητας της κατάργησης του accelerated GDI processing στα Vista, να εξηγήσω πως και το GDI και το GDI+ θεωρούνται εδώ και χρόνια legacy και περιοριστικά GX layers, ενώ η χρήση common 2D/3D rendering layer (Vista - 7) επέβαλε την χρήση του mapping των GDI σε DX/DWM calls.
Στα Windows 7, ο rendering translator αντικαταστάθηκε από kernel mode 2/3D primitive processing engine, το οποίο όχι απλά παρέχει GPU accelerated χαρακτηριστικά σε GDI legacy apps, αλλά για πρώτη φορά επιτρέπει την επιτάχυνση ακόμα και του GDI+, συμπεριλαμβανομένων όχι μόνο των vectors αλλά και των raster OPs. Επιπλέον, ολόκληρο το rendering engine αλλά και το WDDM1.1 subsystem έχουν επανεγγραφεί ώστε να υποστηρίζουν πλήρες mp (physical & core) processing, ενώ για επίσης πρώτη φορά παρέχεται το per app zbuffering που καταργεί εντελώς το overhead του memcpy (sys mem).
Επίσης η απομόνωση των 2/3D primitives από τα vector και raster ops, αφήνει στην "δικαιοδοσία" των GPU vendors μόνο την επιτάχυνση των θεμελιωδών functions (A/Bl, HW cursors, COORD xlt, bitblit κλπ) ενώ η πλήρης διαχείριση και επιτάχυνση του buffering, vector processing, ROP κλπ περνούν στο subsytem των Windows 7 εκμεταλευόμενα τα χαρακτηριστικά του multiprocessing, του duplicate memcpy prevention και της πλήρους εξάλειψης του bottleneck του διαρκούς GX mem I/O. Και φυσικά εντέλλει προσφέρει και ένα unified graphics layer απαλλαγμένο στο μεγαλύτερο βαθμό του από το legacy code και τα επίσης legacy issues των drivers των GPU vendors.
Στα Windows 7 (και στα 2008/R2) για πρώτη φορά μετά την δημιουργία του επανεγγράφηκε το μεγαλύτερο μέρος του NT Kernel, δίνοντας πλέον ιδιαίτερη έμφαση στο SMP και όχι απλά στο app level physical processor multithreading που ίσχυε μέχρι σήμερα. Επίσης σημαντικότατα ,όσον αφορά το performance, subsystems ή sub features όπως το thread scheduling τα sync facilities του process scheduler, αλλά και ο memory manager έχουν είτε επανεγγραφεί είτε βελτιωθεί στο σύνολό τους. Για περισσότερες λεπτομέρειες σχετικά με αυτά, υπάρχουν ήδη εδώ στο forum δικά μου posts αλλά και άλλων φίλων όπου τα αναλύουμε διεξοδικότερα.
Κάνοντας quote από παλαιότερό μου post, στον νέο kernel έχει σχεδόν εκμηδενιστεί η χρήση hardware locks, ενώ γίνεται χρήση στρατηγικών όπως resource partitioning, lock-free algorithms και κατάργηση του άχρηστου πλέον kernel dispatcher lock. Στη θέση μάλιστα του d/l χρησιμοποιείται ένα εξελιγμένο synchronization scheme διαχειρίζεται τους timers, τα deferred procedure calls και το swap in - swap out των thread kernel stacks. Επίσης για την απομνημόνευση και διαχείριση των transition states, δεν χρησιμοποιείται πλέον locking, ούτε οι συνήθεις αλγόριθμοι lock state, αλλά μια μορφή spinlocks που στηρίζονται και πάλι σε lock-free αλγόριθμους. Με τα παραπάνω αποφεύγεται σχεδόν πλήρως το latency που παρατηρούταν στο lock dispatching καθώς και στο semaphore notification.
Στο παρελθόν, συμπεριλαμβανομένων και των Vista, το dispatcher lock έπρεπε να είναι παρόν για τον συχρονισμό του threading και να παίζει το ρόλο του "κυρίαρχου" kernel spinlock. Με την πλήρη αφαίρεσή του, και την αντικατάσταση της λειτουργίας του από το νέο εξελιγμένο sync scheme, όλοι οι περιορισμοί (π.χ. 16 physical cpu) αλλά και όλες οι καθυστερήσεις του thread synchronization και event notification έχουν αρθεί με αποτέλεσμα, όπως είχα πεί και παλαιότερα, την τρομερή ευελιξία του smp scaling χωρίς latency issues, αλλά το σημαντικότερο την πραγματική αύξηση των επιδόσεων σε επίπεδο multithreaded execution και την πολύ καλύτερη εκμετάλλευση του επεξεργαστικού hardware.
Όπως μάλιστα είχα υποδείξει και σε φίλους που με είχαν ρωτήσει στο παρελθόν, δεν είναι λοιπόν καθόλου παράξενη ή μη αναμενόμενη η αύξηση του performance multithread εφαρμογών σε ποσοστό που υπερβαίνει το 200% ή και ακόμα περισσότερο, ενώ υπάρχει σημαντικότατη βελτίωση του performance ακόμα και σε single threaded εφαρμογές αν αυτές εκμεταλλεύονται τα μειωμένα h/w locks και το νέο process scheduler.
Για να μην παρεξηγηθώ, το παραπάνω δεν σημαίνει πως "κάθε εφαρμογή θα είναι δύο, τρεις ή περισσότερες φορές ταχύτερη στα Windows 7". Απαιτητικές όμως εφαρμογές ιδιαίτερα αυτές που κάνουν χρήση των βελτιωμένων χαρακτηριστικών, και με multi thread χαρακτηριστικά δεν αποκλείεται να κερδίσουν ακόμα και πολύ περισσότερο σε απόδοση συγκεκριμένων σημείων του processing τους, ενώ η αύξηση των επιδόσεων αφορά και τα επιμέρους τμήματα ή applets του ίδιου του συστήματος, αφού όπως προανέφερα στο μεγαλύτερό τους μέρος έχουν επανασχεδιαστεί ώστε να εκμεταλλεύονται τα νέα χαρακτηριστικά.
Μέσα στα έμμεσα θετικά επακόλουθα του kernel rewrite είναι και ο νέος INTR exception dispatcher που καταργώντας το exception polling και υιοθετώντας τα accelerated interprocessor syncs και το MP thread spreading των events, επιταχύνει σε εξαιρετικά μεγάλο βαθμό ολόκληρο το σύστημα και φυσικά σε ακόμα μεγαλύτερο ποσοστό τα επιμέρους subsystems, όπως τους exception handlers, τα APC/DPC και την δημιουργία των executive objects. Και μόνο από αυτές τις βελτιώσεις, το hardware layer (κυρίως) του συστήματος, έχει πλέον το μικρότερο μέχρι σήμερα σε NT latency, κάτι που γίνεται ιδιαίτερα εμφανές σε υποσυστήματα που στο παρελθόν δεν ανταποκρίνονταν ιδιαίτερα σωστά.
Σαν παράδειγμα θα αναφέρω D/D acquisition devices (όπου οι βελτιώσεις στο latency ξεπερνούν το 500%), A/D devices (>300%) και αν αυτά φαίνονται αδιάφορα ή άγνωστα σε κάποιους φίλους, να προσθέσω τα sound devices (απαντώντας έτσι και σε ερώτηση του φίλου manosdoc). Η βελτίωση του latency, του processing, η μείωση του cpu overhead και η απαλοιφή σχεδόν φαινομένων noise, buffering issues κλπ ακόμα και σε φτηνά onboard codecs κάνει το sound system των Windows 7 πρακτικά το ταχύτερο και χωρίς την απαίτηση εξειδικευμένων hardware DSP ακόμα και σε ιδιαίτερα απαιτητικές εφαρμογές.
Μέσα στο επιμέρους βελτιώσεις του performance, θα πρέπει να προσθέσω το rendering acceleration των external rendering devices (printers, plotters, pagesetters κλπ) ειδικά με την έλευση των WDDM output drivers και WDDM printing devices, το MT/P accelerated font rendering, το pipelined processing του metadata & sync stage processing του NTFS και πλήθος άλλων μικρότερης σημασίας υποσυστημάτων, των οποίων όμως γίνεται καθολική χρήση από κάθε εφαρμογή, αλλά και από το ίδιο το σύστημα. Συνεπώς η αύξηση του performance σε οποιοδήποτε από αυτά τα υποσυστήματα έχει άμεσο αντίκτυπο σε κάθε εφαρμογή που τα χρησιμοποιεί, ακόμα και αυτές που δεν σχεδιάστηκαν ώστε να εκμεταλλεύονται τα βελτιωμένα χαρακτηριστικά του λειτουργικού ή το SMP.
Τελειώνοντας, θα πρότεινα να μην βιαζόμαστε να κρίνουμε τα Windows 7, είτε θετικά είτε αρνητικά. Με την επίσημη κυκλοφορία τους, θα είναι ο καθένας σε θέση να κρίνει θετικά ή αρνητικά τις όποιες βελτιώσεις. Προσωπικά, είμαι σχεδόν βέβαιος πως η συγκεκριμένη έκδοση με τις αλλαγές που επιφέρει ιδιαίτερα όσον αφορά το performance θα ξαφνιάσει ευχάριστα, φίλους και εχθρούς των Windows.
Σημείωση: Το μήνυμα αυτό γράφτηκε 13 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
iJohnnyCash
e-steki.gr Founder
Ο Panayotis Yannakas αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 34 ετών, επαγγέλεται Επιχειρηματίας και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 24,043 μηνύματα.
21-11-10
13:45
Και τα δυοεχει καποιους βασικους οδηγους..που λειτουργουν ακομα και αν δεν βαλεις με cd του κανονικους..?
Σημείωση: Το μήνυμα αυτό γράφτηκε 13 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
iJohnnyCash
e-steki.gr Founder
Ο Panayotis Yannakas αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 34 ετών, επαγγέλεται Επιχειρηματίας και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 24,043 μηνύματα.
02-01-10
08:28
Παρόλο που τα Windows 7 δεν έχουν τεράστιες διάφορες με τα Vista, θεωρώ ότι δεν αξίζει κάποιος να μείνει στα Vista. Η σημαντικότερη διαφορά ότι επανασχεδιάσανε από την αρχή το Panel για τα δίκτυα όποτε δεν υπάρχουν τα γνωστά προβλήματα των Vista και κυρίως ο εκνευρισμός.
Σαφώς και είναι πιο εύχρηστα, ασχέτως αν πολύ λίγο πιο εύχρηστα. Αυτές οι μικρές αλλαγές (όπως το ότι πολύ εύκολα βάζεις δυο παράθυρα διπλά δίπλα) λύνουν πολλές φόρες τα χέρια.
Σαφώς και είναι πιο εύχρηστα, ασχέτως αν πολύ λίγο πιο εύχρηστα. Αυτές οι μικρές αλλαγές (όπως το ότι πολύ εύκολα βάζεις δυο παράθυρα διπλά δίπλα) λύνουν πολλές φόρες τα χέρια.
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.