parsifal Δημοσ. 24 Μαΐου 2010 Μέλος Share Δημοσ. 24 Μαΐου 2010 Αν είναι upstream πρόβλημα του Qt με την κλάση QNetworkAccessManager, την πουλέψαμε! Τί το 'θελα και το μελέτησα ο γκαντέμης! [#QTBUG-8914] QNetworkAccessManager ftp leaks memory Και το επιβεβαίωσα, με τη βοήθεια του Process Monitor από Sysinternals. Όταν τελειώνει το download speed test, το Qt σταματά τα 4 από τα 6 file downloads, όσα είναι HTTP. Τα δύο υπόλοιπα που συνεχίζουν κρυφά στο υπόβαθρο και προκαλούν το memory leak και το network usage είναι αμφότερα από FTP και γίνονται forcefully disconnect μόνο με έξοδο από το πρόγραμμα: Θα βγάλω σύντομα νέο revision στο οποίο θα αντικαταστήσω τα 2 αυτά download links με HTTP. Επίσης δεν ξέρω αν είναι φυσιολογικό ή θα βοηθήσει κάπου, αλλά τρέχω το πρόγραμμα με την top ανοιχτή και μου εμφανίζει 4-5 διαφορετικά processess του qspeedtest. Άλλο πάλι κι αυτό! Με το που εκκινείς το πρόγραμμα, και χωρίς να κάνεις κλικ στο Start, σου εμφανίζονται πολλαπλές διεργασίες qspeedtest; Δε μπορώ να το εξηγήσω. Fork δεν κάνω πουθενά και η μόνη επιπλέον διεργασία που χρησιμοποιείται είναι η ping του συστήματος. Αλλά θα έπρεπε η top να σου εμφανίζει ως όνομα "ping", όχι "qspeedtest". Ίσως επειδή το πρόγραμμα καλεί την ping του συστήματος ως εξωτερική διεργασία. Αν και το Process tab στο GNOME System Monitor εμφανίζει Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
loverman210 Δημοσ. 24 Μαΐου 2010 Share Δημοσ. 24 Μαΐου 2010 Γιατι δε το γράφεις σε java να δεις άσπρη μέρα? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
markelos Δημοσ. 24 Μαΐου 2010 Share Δημοσ. 24 Μαΐου 2010 Άλλο πάλι κι αυτό! Με το που εκκινείς το πρόγραμμα, και χωρίς να κάνεις κλικ στο Start, σου εμφανίζονται πολλαπλές διεργασίες qspeedtest; Δε μπορώ να το εξηγήσω. Fork δεν κάνω πουθενά και η μόνη επιπλέον διεργασία που χρησιμοποιείται είναι η ping του συστήματος. Αλλά θα έπρεπε η top να σου εμφανίζει ως όνομα "ping", όχι "qspeedtest". Ίσως επειδή το πρόγραμμα καλεί την ping του συστήματος ως εξωτερική διεργασία. Αν και το Process tab στο GNOME System Monitor εμφανίζει Λοιπόν, με την htop με το που πατάω το start πολλαπλασιάζονται τα processes, όταν είναι idle είναι μόνο μία. Με την top εμφανίζει μόνο μία... Τι να πω... Πάντως το όνομα της διεργασίας είναι qspeedtest και όχι ping. Επίσης το έχω ανοιχτό από τη στιγμή του τελευταίου μου ποστ, και με λύπη σου αναφέρω πως παρατηρώ memory leak τελικά. Αυτή τη στιγμή καταλαμβάνει 700MB! Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
parsifal Δημοσ. 24 Μαΐου 2010 Μέλος Share Δημοσ. 24 Μαΐου 2010 Λοιπόν, με την htop με το που πατάω το start πολλαπλασιάζονται τα processes, όταν είναι idle είναι μόνο μία. Με την top εμφανίζει μόνο μία... Τι να πω... Πάντως το όνομα της διεργασίας είναι qspeedtest και όχι ping. Ντροπή σου, και με τρόμαξες τσάμπα! Επίσης το έχω ανοιχτό από τη στιγμή του τελευταίου μου ποστ, και με λύπη σου αναφέρω πως παρατηρώ memory leak τελικά. Αυτή τη στιγμή καταλαμβάνει 700MB! Ναι, αν είδες στο προηγούμενο μήνυμά μου, μάλλον είναι bug του Qt framework, non-platform specific κατά τα φαινόμενα και δε γίνεται trigger πάντα (ο,τι χειρότερο για bug hunting). Γιατι δε το γράφεις σε java να δεις άσπρη μέρα? 1. Java; Μπλιάχ! 2. Πρέπει να κάνω τρομακτικής έκτασης refresh γνώσεων + έξτρα διάβασμα για να κατορθώσω να κάνω port το QSpeedTest σε Java. Μετά, έχει ξεκινήσει ήδη ως C++ project στο Sourceforge, έχει ψιλοακουστεί ως όνομα προγράμματος στο Internet (π.χ. στην κόντρα για την 1η θέση στα αποτελέσματα του Google, εκτόπισε ήδη το μέχρι πρότινος #1 που ήταν ένα online speed test με το όνομα qSpeedtest Beta ή κάπως έτσι) 3. Βλ. 1! Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
liopyr Δημοσ. 25 Μαΐου 2010 Share Δημοσ. 25 Μαΐου 2010 > * Checkbox to enable/disable download speed test | tenk yiou-tenk yiou! Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
parsifal Δημοσ. 25 Μαΐου 2010 Μέλος Share Δημοσ. 25 Μαΐου 2010 Νέα έκδοση r11 με σημαντικές αλλαγές, οι βασικότερες είναι η (ελπίζω οριστική αυτήν την φορά) διόρθωση του memory leak και trailing network usage καθώς και η προσθήκη ελέγχου+notification για νεότερες εκδόσεις του προγράμματος: > revision 11 - 20100525: * Notification when a new program version is available * Temporary workaround for upstream QTBUG-8914: replaced FTP download links with HTTP ones * Print group average packet loss and rank in HTML and vB code * Moved hardcoded download speed test targets to qspeedtest.ini * Updated embedded target list https://sourceforge.net/projects/qspeedtest/files/ Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
markelos Δημοσ. 25 Μαΐου 2010 Share Δημοσ. 25 Μαΐου 2010 Ντροπή σου, και με τρόμαξες τσάμπα! Ναι, αν είδες στο προηγούμενο μήνυμά μου, μάλλον είναι bug του Qt framework, non-platform specific κατά τα φαινόμενα και δε γίνεται trigger πάντα (ο,τι χειρότερο για bug hunting). Ναι, my bad sorry... Νέα έκδοση r11 με σημαντικές αλλαγές, οι βασικότερες είναι η (ελπίζω οριστική αυτήν την φορά) διόρθωση του memory leak και trailing network usage καθώς και η προσθήκη ελέγχου+notification για νεότερες εκδόσεις του προγράμματος. To notification θα μας προτρέπει να κατεβάσουμε τη νέα έκδοση δηλαδή; Υπάρχει περίπτωση να γίνεται αυτόματα update χωρίς να πηγαίνουμε στη σελιδα; Το memory leak φαίνεται να διορθώθηκε. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
parsifal Δημοσ. 25 Μαΐου 2010 Μέλος Share Δημοσ. 25 Μαΐου 2010 To notification θα μας προτρέπει να κατεβάσουμε τη νέα έκδοση δηλαδή; Υπάρχει περίπτωση να γίνεται αυτόματα update χωρίς να πηγαίνουμε στη σελιδα; Για αρχή, το πρώτο + άνοιγμα του default browser του συστήματος στη σελίδα με τα downloads, αν ο χρήστης απαντήσει καταφατικά σε σχετική ερώτηση. Για αυτόματο, in-place update πρέπει να γίνουν αρκετές αλλαγές στο σχεδιασμό του προγράμματος. Μετατίθεται για το (όχι και πολύ προσεχές) μέλλον και πιθανόν να συνδυαστεί τότε και με χρήση κάποιου installer software όπως Inno Setup για τη Windows έκδοση. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
parsifal Δημοσ. 25 Μαΐου 2010 Μέλος Share Δημοσ. 25 Μαΐου 2010 Υλοποίηση ενός μικρού feature request + πιο αναλυτικό OS version detection σε Windows: > revision 13 - 20100525: | * Fixed a small compiling error under non-Windows OS | revision 12 - 20100525: | * Considerably more accurate OS version reporting under Windows | * A QSplitter widget between log console and results console | that allows for vertical resizing of said consoles | https://sourceforge.net/projects/qspeedtest/files/ Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Super Moderators Thresh Δημοσ. 25 Μαΐου 2010 Super Moderators Share Δημοσ. 25 Μαΐου 2010 oh come on! σαν τους drivers της realtek κατάντησε! :p :p Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
parsifal Δημοσ. 25 Μαΐου 2010 Μέλος Share Δημοσ. 25 Μαΐου 2010 Ε, τώρα που είναι φρέσκο το project και σε Alpha status ακόμη, λογικό δεν είναι; Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Super Moderators Thresh Δημοσ. 25 Μαΐου 2010 Super Moderators Share Δημοσ. 25 Μαΐου 2010 εντυπωσιακό το pop up για το update Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
greatst Δημοσ. 27 Μαΐου 2010 Share Δημοσ. 27 Μαΐου 2010 Συγχαρητήρια για την εφαρμογή σου parfifal! Την τρέχω σε Mac OS X 10.6.3 και τα αποτελέσματα είναι της μορφής: >Greek servers Avg ping Pckt loss Jitter Rank ------------------------------------------------------------------------------- On Telecoms N/A 100.00% N/A N/A Wind N/A 100.00% N/A N/A Cyta Hellas N/A 100.00% N/A N/A Hellas Online N/A 100.00% N/A N/A Vivodi N/A 100.00% N/A N/A Forthnet N/A 100.00% N/A N/A Netone N/A 100.00% N/A N/A NTUA@GRNET N/A 100.00% N/A N/A OTE N/A 100.00% N/A N/A Vodafone N/A 100.00% N/A N/A Orange Business Hellas N/A 100.00% N/A N/A Verizon Hellas N/A 100.00% N/A N/A Group sum: N/A Group average: N/A Επίσης παρατηρώ το εξής: >Host OS: uname: illegal option -- o 10.3.0 i386 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
parsifal Δημοσ. 27 Μαΐου 2010 Μέλος Share Δημοσ. 27 Μαΐου 2010 Δεν έχω πρόσβαση δυστυχώς σε Mac σύστημα για να κάνω τις σχετικές αλλαγές και προσθήκες στον κώδικα, ώστε να λειτουργεί και σε Mac OS! Αν έπρεπε να μαντέψω για το 100% packet loss, θα έλεγα ότι είναι εικονικό και προκαλείται από μη σωστό χειρισμό του output που δίνει η εντολή ping σε Mac OS. Το ίδιο συμβαίνει και με το output της εντολής uname, όπως παρατήρησες κι εσύ, μόνο που εκεί δεν προσπαθώ καν να κάνω parsing της εξόδου της uname, απλά την παίρνω αυτούσια και την προβάλλω στο GUI, γι' αυτό και ήταν λίγο "embarrassing" το αποτέλεσμα! Τώρα, για να μπούμε πιο βαθιά στον κώδικα: Ο τρόπος που έχω επιλέξει για να εξασφαλίσω το..χμμμ...crossplatform-ness (σόρυ για τον αδόκιμο όρο) του κώδικα είναι πολύ απλοϊκός και συνίσταται σε χρήση preprocessor directives και ορισμένων Qt global definitions (όπως π.χ. το Q_WS_WIN για περιβάλλον Windows) για conditional compiling των σχετικών σημείων του κώδικα όπου ο εκάστοτε χειρισμός πρέπει να είναι διαφορετικός αναλόγως του λειτουργικού συστήματος. Π.χ. για την εκτέλεση της ping, χρησιμοποιώ την ping του συστήματος μέσω ενός QProcess object: > targetgroup.cpp:181 > QProcess pingProcess; QEventLoop loop; #ifdef Q_WS_WIN QString pingCmd = QString("ping -n 1 -w %1 %2").arg(PINGTIMEOUT).arg(address); int skipLines = 3; #else QString pingCmd = QString("ping -c 1 -W %1 %2").arg(PINGTIMEOUT / 1000).arg(address); int skipLines = 6; #endif και λίγο παρακάτω, το parsing γίνεται ως εξής: > #ifdef Q_WS_WIN if(!contents.contains(QString("=").toAscii())) { contents = pingProcess.readLine().trimmed(); } #endif if(contents.contains(QString("=").toAscii())) { rttString = contents; list = rttString.split("="); #ifdef Q_WS_WIN rttString = list[2]; rttString.chop(6); #else list = QString(list[1]).split('/'); rttString = list[0]; #endif addRtt(rttString.toDouble()); } Η παραπάνω λογική δουλεύει σωστά σε Windows και Linux-based συστήματα, σε Mac OS όμως δεν είχα την ευκαιρία να εξετάσω το output της εντολής ping και να αποφασίσω π.χ. κατάλληλη τιμή για τη μεταβλητή skipLines ή βάσει ποιου χαρακτήρα να κάνω tokenize τη γραμμή του output που ενδιαφέρει, ώστε να απομονώσω την τιμή σε msec του round-trip time [1]. Σε συνεργασία με κάποιον χρήστη Mac OS, τα παραπάνω μπορεί να λυθούν (πιθανότατα εύκολα) και να γίνουν οι κατάλληλες προσθήκες στον κώδικα. Τα αντίστοιχα ισχύουν και για την εντολή uname. Επίσης, έχω απευθύνει ήδη πρόσκληση σε επίδοξους co-developers να συμμετάσχουν στο project. Ως project administrator στο SourceForge, μπορώ να κάνω add κι άλλα άτομα σε διάφορους ρόλους, εκ των οποίων ο βασικός (όσον αφορά τους developers) είναι η write πρόσβαση στο SVN repository και στο File Release System του SF.net για να ανεβάζουν binaries που έχουν κάνει build, π.χ. σε Mac που εγώ δε διαθέτω. [1] Εδώ κανονικά θα ήταν πιο σωστό να υλοποιήσω μία δική μου ping method/function ή να χρησιμοποιήσω μία σχετική βιβλιοθήκη, αλλά σε Linux-based συστήματα (ίσως και γενικότερα Unix-οειδή) υπάρχει πρόβλημα δικαιωμάτων: για την αποστολή και παραλαβή ICMP datagrams απαιτούνται raw sockets, τα οποία χρειάζονται super-user δικαιώματα. Αυτός είναι και ο λόγος που η ping σε Linux τρέχει ως root μέσω setuid flag στο εκτελέσιμό της, οπότε βολεύει η κλήση της μέσω QProcess. Η εναλλακτική θα ήταν να θεωρείται ως απαίτηση η εκτέλεση του QSpeedTest με root privileges, κάτι όχι ιδιαίτερα ρεαλιστικό Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Super Moderators Thresh Δημοσ. 28 Μαΐου 2010 Super Moderators Share Δημοσ. 28 Μαΐου 2010 στην latest version κατά την διάρκεια που γίνεται το bandwidth test νομίζω δεν μπορούμε να πατήσουμε STOP... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.