View Full Version : Windows and Linux test.
DarthMoul
13-09-2004, 19:43
Λόγω των πολλών συζητήσεων που έχουν γίνει κατά καιρούς στο φόρουμ για τις επιδόσεις των windows και του linux, σκέφτηκα να κάνω μια δοκιμή ανάμεσα σε αυτά τα δύο λειτουργικά από την δική μου οπτική γωνία, και να σας παρουσιάσω το αποτέλεσμα.
Λόγω της απουσίας κοινών benches στα δύο λειτουργικά θα χρησιμοποιήσω ένα πρόγραμμα το οποίο έχω φτιάξει εγώ. Το πρόγραμμά αυτό είναι ένας external disk sorter, δηλαδή η δουλειά του είναι να ταξινομεί αρχεία. Το συγκεκριμένο πρόγραμμα είναι πλήρως παραμετρικό και σχεδιασμένο ώστε να είναι πολύ ελαφρύ, γρήγορο και κατάλληλο για heavy duty sorts.
Ο λόγος που διάλεξα το συγκεκριμένο task για να κάνω την δοκιμή είναι το γεγονός ότι στατιστικά το 30% του χρόνου λειτουργίας τους (εκτός του idle time), οι υπολογιστές παγκοσμίως τον χρησιμοποιούν για να κάνουν ταξινόμηση. Εδώ η δοκιμή θα γίνει πάνω στο datamation sort, δηλαδή πάνω σε ένα αρχείο με 1,000,000 records των 100 bytes και ένα κλειδί των 10 bytes. Από το 1986 εώς το 2001 το datamation sort, μαζί με τα spec benchmarks, ήταν το σημείο αναφοράς για τον προσδιορισμό της ταχύτητας ενός υπολογιστή. Από το 2001, λόγω της μεγάλης αύξησης της υπολογιστικής ισχύος, το datamation sort παραγκωνίστηκε από άλλα sort benches όπως το terrabyte sort και το 1 minute sort. Για την περίπτωση μας όμως νομίζω ότι είναι σωστό να το χρησιμοποιήσουμε, αφού δεν θα κάνουμε την μέτρηση σε κάποιο supercomputer αλλά σε έναν Pentium 3 στα 800 ΜΗz και αργότερα σε έναν Pentium 4 στα 3 GHz.
DarthMoul
13-09-2004, 20:12
Το συγκεκριμένο πρόγραμμα, όπως όλα τα προγράμματα ταξινόμησης, πρέπει να διαβάσει ένα αρχείο και να παράγει ένα ταξινομημένο αντίγραφο του στον ελάχιστο δυνατό χρόνο, και με την χρήση των ελάχιστων δυνατών πόρων. Αυτό θα έχει σαν αποτέλεσμα να δοκιμαστούν τα παρακάτω modules του λειτουργικού.
1. Το filesystem. Το οποίο λόγω του εντατικού disk I/O θα δοκιμαστεί σκληρά. Το filesystem είναι και η αχίλλειος πτέρνα των λειτουργικών. Κάτω από ιδιαίτερα απαιτητικές συνθήκες μπορεί να προκαλέσει CPU load πάνω από 20%. Και φυσικά όταν ταξινομούμε παράλληλα αυτό κοστίζει πολύ.
2. Το disk cache managment. Όταν μέσα σε ελάχιστα δευτερόλεπτα θα έχουμε disk traffic πάνω από 200 MBytes ο cache manager του λειτουργικού θα έχει πολλά να κάνει. Για να δούμε τι θα καταφέρει.
3. Ο memory manager. Για να κάνουμε την ελάχιστη δυνατή χρήση της μνήμης που έχουμε, απαιτήται δυναμική διαχειρηση της και η στατική χρήση της αποκλείεται. Τα αιτήματα για για δέσμευση και αποδέσμευση μνήμης θα πέφτουν βροχή. Τι θα κάνει το λειτουργικό;
Αυτό που δεν θα δοκιμαστεί θα είναι ο scheduler, δηλαδή ο χρονοδρομολογητής των διεργασιών, ένα από τα σημαντικότερα κομμάτια του kernel ενός multitasking λειτουργικού. Ο λόγος είναι η άγνοια μου πάνω στο thread programming under windows που δεν μου επιτρέπει ακόμα να κάνω port την MT έκδοση του προγράμματος από το unix.
Στο screenshot είναι το help screen του προγράμματος σε Windows.
DarthMoul
13-09-2004, 20:36
Οι δοκιμές και στα δύο λειτουργικά θα γίνουν πάνω στο ίδιο μηχάνημα, έναν dual P3 στα 800 ΜΗz με 512 MB SDRAM PC100 ECC/CL2.
H έκδοση των windows είναι 2000 Pro και θα τρέξει πάνω σε έναν WD800JB. Ο compiler που χρησιμοποίησα ήταν η Microsoft C/C++ version 13.00 με την παράμετρο /Ox που σημαίνει maximum optimization.
Το linux είναι slackware 10 και θα τρέξει σε έναν δίσκο WD400JB. O compiler που χρησιμοποίησα είναι ο GCC 3.3.4. με παραμετρους -O3 -mcpu=pentium3
Παρακάτω είναι όλα τα απαραίτητα screenshots που χρειαζόμαστε για να προχωρήσουμε στην δοκιμή των windows.
DarthMoul
13-09-2004, 21:15
Θα κάνουμε λοιπόν τρεις μετρήσεις. Σε όλες το disk i/o buffer θα είναι 64 kb. Η πρώτη θα χρησιμοποιήσει 64 kb working buffer, η δεύτερη 1 MB και η τρίτη το μέγιστο δυνατό που χρειάζεται για να κάνει την δουλειά όσο γρηγορότερα γίνεται. Στην τρίτη μέτρηση δεν θα υπάρχει sort/merge stage αφού όλη η ταξινόμηση θα γίνει στην μνήμη και τα ταξινομημένα δεδομένα θα αδειάσουν κατευθείαν στον δίσκο χωρίς ενδιάμεση στάση.
Παρακάτω ακολουθούν τα screenshots των μετρήσεων. Τα αποτελέσματα που πήραμε ήταν 29.25, 13.95 και 6.39 seconds αντίστοιχα
DarthMoul
13-09-2004, 22:11
Όπως και πριν στα windows εδώ έχουμε τα snapshots που συνοδεύουν την δοκιμή του linux, δηλαδή πληροφορίες για την CPU και μέτρηση του transfer rate του δίσκου. Λόγω της διαφοράς των δίσκων τα Windows θα έχουν ένα πλεονέκτημα της τάξης των 6 MB/sec περίπου σε transfer rate. Πάμε να δούμε τις μετρήσεις μία μία.
DarthMoul
13-09-2004, 22:28
Εδώ είναι η πρώτη μέτρηση για το linux. 21.84 seconds. Τα windows είχαν κάνει 29.25. Διαφορά υπέρ του linux 25.33%
μ@μ@ει...
παντως τα linux στηνονται σε μηχανηματα με τρελα χαμηλες απαιτησεις...
DarthMoul
13-09-2004, 22:30
Εδώ είναι η δεύτερη μέτρηση για το Linux. 10.28 seconds. Τα windows είχαν κάνει 13.95. Διαφορά υπέρ του Linux 26.30%.
DarthMoul
13-09-2004, 22:34
Και εδώ είναι η τρίτη μέτρηση. 4.86 seconds. Τα windows είχαν κάνει 6.39. Διαφορα υπέρ του linux 23.94%. Αύριο θα ποστάρω και μετρήσεις από έναν P4@3 GHz με windows xp για να δούμε και εκεί γίνεται. Μέχρι τότε μπορούμε να συζητήσουμε για ότι έχουμε ώς εδώ.
Ενδιαφέρουσα η διαφορά αυτή. Αν και τα Windows είχαν διαφορετικούς δίσκους και μεγαλύτερο transfer είχαν χειρότερες επιδόσεις. Αυτό οφείλεται κυρίως που; Στο filesystem;
στον τροπο που ειναι γραμμενος ο κωδικας αποκλειστικα..
Θυμαμαι οτι οταν ειχε διαρευσει ο κωδικας των 2000
το ειχαν ποσταρει κατι λινουξαδες κοροιδευοντας τον τροπο
με τον οποιο ετρεχαν πολλα πραγματα εχοντας βρει πολυ πιο αποτελεσματικους
προγραμματιστικους δρομους για αυτα που εβλεπαν μπροστα τους...
Ο νοων νοειτο....
circular
14-09-2004, 04:03
καλα, αυτη η ιστορία με τον κώδικα των 2000 ήταν τραγική - στο slashdot ελεγε οτι είχαν κάνει grep για "κακές λεξούλες" (BUG, HACK, F*CK κλπ) και είχαν βρει διαμάντια. Πάντως η διαφορά που παρατηρείς DarthMoul μπορεί σε ένα βαθμό να οφείλεται και στο οτι η Windows version δεν είναι multithreaded. Μόνο σε αυτη την περίπτωση θα μπορούσε να γίνει αξιόπιστη σχετικά σύγκριση.
DarthMoul
14-09-2004, 07:20
καλα, αυτη η ιστορία με τον κώδικα των 2000 ήταν τραγική - στο slashdot ελεγε οτι είχαν κάνει grep για "κακές λεξούλες" (BUG, HACK, F*CK κλπ) και είχαν βρει διαμάντια. Πάντως η διαφορά που παρατηρείς DarthMoul μπορεί σε ένα βαθμό να οφείλεται και στο οτι η Windows version δεν είναι multithreaded. Μόνο σε αυτη την περίπτωση θα μπορούσε να γίνει αξιόπιστη σχετικά σύγκριση.Φίλε circular τo πρόγραμμα δεν είμαι multithreaded, τουλάχιστον η έκδοση με την οποία έκανα την δοκιμή. Ήταν ακριβώς το ίδιο source και στα δύο λειτουργικά. Ούτε στο Linux ούτε στα windows χρησιμοποίησα threads. Αν πρόσεξες τα W2k Pro που χρησιμοποιώ είναι με SP4 και δουλεύουν threads κανονικότατα. Το απόγευμα θα ανεβάσω screenshot που θα φαίνεται ότι το λειτουργικό δουλεύει με threads χωρίς πρόβλημα και βλέπει και τις 2 CPU κανονικά.
DarthMoul
14-09-2004, 10:51
Όπως είπα και εχθές θα κάνω και μια δοκιμή με Windows XP Pro, σε έναν Pentium στα 3 GHz με 512 MB μνήμη και δίσκο Maxtor 6Y080M0. Επειδή το πρόγραμμα δεν χρησιμοποιεί threads, εκ των πραγμάτων δεν θα χρησιμοποιηθεί πάνω από το 70% της ισχύος της CPU. Το ποσοστό υποβάθμισης όμως θα είναι μικρότερο του 30%, αφού η δοκιμή που κάνουμε δεν είναι μόνο CPU intensive αλλά και memory και κυρίως disk intensive.
DarthMoul
14-09-2004, 11:31
Εδώ είναι οι μετρήσεις ακριβώς όπως και στις δύο προηγούμενες περιπτώσεις. Η πρώτη μέτρηση έδωσε 23.36'', η δεύτερη 21.52'' και στην τρίτη 5.64''. Το δεύτερο αποτέλεσμα είναι μάλλον ανορθόδοξο αλλά όσες φορές και να μέτρησα πήρα παραπλήσιους χρόνους. Όπως είπαμε και πριν, εδώ σαφώς τα windows είναι αδικημένα λόγω έλλειψης multithreading αφού αυτή η CPU έχει HT. Θα μπορούσαν να έχουν κάπως καλύτερους χρόνους. Πάντως οι μετρήσεις είναι τόσο κοντά με αυτές του linux στον P3@800 που νομίζω πως δεν αφήνει αμφιβολία για το ποιός κάνει την καλύτερη διαχείρηση του hardware. Και για να συμπληρώσω μια παράληψη, τα Windows και στις δύο περιπτώσεις ήταν με NTFS και το Linux με ReiserFS version 3.0
Εεε μπραβο φιλε μου καλη προσπαθεια ειναι φανερο το γεγονος της ταχυτητας αυτης.:)
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.