Δλδ αν βάλει turbo/nstream πόσο θα πιάσει 8ΜΒ?Μέτρια προς μούφα λέω..και τέλος.!Εσυ panoulix μη πετάγεσαι είσαι newfis.
1 2 ms 2 ms 2 ms 10.140.15.10
2 3 ms 3 ms 3 ms antirrio-rio.bb.pwmn [10.140.200.93]
3 9 ms 13 ms 11 ms 10.140.200.90
4 11 ms 5 ms 5 ms pf-agyia.bb.pwmn [10.143.254.41]
5 12 ms 6 ms 22 ms agyia-zion.bb.pwmn [10.143.254.5]
6 9 ms 5 ms 6 ms zion-liberty.bb.pwmn [10.143.254.53]
7 1446 ms 13 ms 10 ms ap.liberty.pwmn [10.143.9.1]
Έτσι τυχαία..και μη μου πεις οτι κατέβαζες σάπιε trv
Στατιστικά στοιχεία Ping για 10.143.9.1 απο Ρίο:
Πακέτα: Απεσταλμένα = 41, Ληφθέντα = 41, Απολεσθέντα = 0 (απώλεια 0%),
Πλήθος διαδρομών αποστολής και επιστροφής κατά προσέγγιση σε χιλιοστά του δευτερ
ολέπτου:
Ελάχιστο = 6ms, Μέγιστο = 96ms, Μέσος όρος = 16ms
Έυγε.. μέχρι να σαπίσεις πάλι
Ps Το γνωστό sockbench που τρέχει στα debianakia σας απέχει πολύ απ τις "πραγματικές" (απ την πράξη ftp/p2p) ταχύτητες..αν μετρήθηκαν με αυτό. Αν πιάνεις 3.6MΒ (28Mbps) με ftp απο αγυιά-liberty με απλό 5Ghz τότε είμαι ο Πάπας της Ρώμης.
Παρατηρήσεις για το sockbench
Last edited by sf1n4k1 on Tue Dec 04, 2007 12:30 am, edited 4 times in total.
Θανάση, αυτό το 1446ms δε σημαίνει πως είναι καθυστέρηση μεταξύ zion και liberty. Το traceroute στέλνει ένα πακέτο icmp echo με αυξανόμενο TTL κατά 1 κάθε φορά, αλλά πάντα από το source που είσαι εσύ. Που σημαίνει πως αυτά τα 1446ms μπορεί να καθυστέρησαν οπουδήποτε μεταξύ της διαδρομής από Ρίο ως Liberty.sf1n4k1 wrote:Δλδ αν βάλει turbo/nstream πόσο θα πιάσει 8ΜΒ?Μέτρια προς μούφα λέω..και τέλος.!Εσυ panoulix μη πετάγεσαι είσαι newfis.
1 2 ms 2 ms 2 ms 10.140.15.10
2 3 ms 3 ms 3 ms antirrio-rio.bb.pwmn [10.140.200.93]
3 9 ms 13 ms 11 ms 10.140.200.90
4 11 ms 5 ms 5 ms pf-agyia.bb.pwmn [10.143.254.41]
5 12 ms 6 ms 22 ms agyia-zion.bb.pwmn [10.143.254.5]
6 9 ms 5 ms 6 ms zion-liberty.bb.pwmn [10.143.254.53]
7 1446 ms 13 ms 10 ms ap.liberty.pwmn [10.143.9.1]
Έτσι τυχαία..και μη μου πεις οτι κατέβαζες σάπιε trv
Το sockbench στέλνει ένα stream από data που μπορούν να συμπιεστούν από το compression της atheros, αν αυτό είναι ενεργοποιημένο. Αυτό είναι το μόνο σημείο που μπορεί να "ξεγελάσει" τη μέτρηση. Δε ξέρουμε όμως αν το compression είναι ενεργοποιημένο στα links του zion. Αν θυμάμαι καλά είναι ενεργοποιημένο με Αγυιά αλλά όχι με liberty.sf1n4k1 wrote:Ps Το γνωστό sockbench που τρέχει στα debianakia σας απέχει πολύ απ τις "πραγματικές" (απ την πράξη ftp/p2p) ταχύτητες..αν μετρήθηκαν με αυτό. Αν πιάνεις 3.6MΒ (28Mbps) με ftp απο αγυιά-liberty με απλό 5Ghz τότε είμαι ο Πάπας της Ρώμης.
Οι atheros δίνουν μέχρι 4,2MB/sec ασυμπίεστα στα 54Mbit, αν το SNR είναι πάνω από 30db σταθερά. Οπότε είναι πολύ πιθανό τα νούμερα να είναι πραγματικά.
Μπορώ να κάνω build μία έκδοση του sockbench που να στέλνει pseudo-random data για να μην επηρεάζεται από τυχόν συμπίεση.
mp
edit: Τελικά τα data του sockbench είναι σχετικά "τυχαία". Συγκεκριμένα χρησιμοποιείται η εξής ρουτίνα για randomize:
Code: Select all
void randomize_data(void)
{
int i;
for (i=0;i<DATA_BUFFER_LENGTH;i++) buffer[i]=(i*i+i);
}
mp
Nice:-)
Τα παραπάνω που είπα τα είδα στην πράξη γι αυτό και το ανέφερα..px το sockbench να λέει 3MB και στην πραγματικότητα να μη περνάει πάνω απο 2.4ΜΒ σε ftp..δεν ξέρω τι αλλαγές έκανε ο pf στον κώδικα..αλλά το δικό του sockbench είναι πιο κοντά στην πραγματικότητα.
Ps Για το traceroute χαβαλέ έκανα..αν και νόμιζα οτι μετράει απο hop σε hop τα ms..και όχι απ τον αρχικό προορισμό. Επίσης αν δείς είναι στο 9.1 που είναι το Cisco-AP και όχι στο 9.2 που είναι το router..άρα μπορεί να παίχτηκε και κάτι εκεί..είχε κάτι σκαλώματα απο παλιά το router-cisco connection:-)
Τα παραπάνω που είπα τα είδα στην πράξη γι αυτό και το ανέφερα..px το sockbench να λέει 3MB και στην πραγματικότητα να μη περνάει πάνω απο 2.4ΜΒ σε ftp..δεν ξέρω τι αλλαγές έκανε ο pf στον κώδικα..αλλά το δικό του sockbench είναι πιο κοντά στην πραγματικότητα.
Ps Για το traceroute χαβαλέ έκανα..αν και νόμιζα οτι μετράει απο hop σε hop τα ms..και όχι απ τον αρχικό προορισμό. Επίσης αν δείς είναι στο 9.1 που είναι το Cisco-AP και όχι στο 9.2 που είναι το router..άρα μπορεί να παίχτηκε και κάτι εκεί..είχε κάτι σκαλώματα απο παλιά το router-cisco connection:-)
- korkakak
- AMD Athlon
- Posts: 992
- Joined: Wed Mar 07, 2007 11:52 pm
- PWMN Wind Node ID: 87
- Location: Πλατεία Όλγας
Μια που το έχει πρόχειρο, το buffer πως ορίζεται?mp wrote:Code: Select all
void randomize_data(void) { int i; for (i=0;i<DATA_BUFFER_LENGTH;i++) buffer[i]=(i*i+i); }
Το DATA_BUFFER_LENGTH είναι 2^16 ?
Voilà! In view, a humble vaudevillian veteran, cast vicariously as both victim and villain by the vicissitudes of Fate. This visage, no mere veneer of vanity, is a vestige of the vox populi, now vacant, vanished. However, this valorous visitation of a by-gone vexation, stands vivified and has vowed to vanquish these venal and virulent vermin van-guarding vice and vouchsafing the violently vicious and voracious violation of volition.
ΠΡΟΣΦΕΡΕΤΕ ΕΝΕΡΓΑ ΣΤΗΝ ΚΟΙΝΟΤΗΤΑ! ΕΜΠΛΟΥΤΙΣΤΕ ΤΟ wiki
my blog
ΠΡΟΣΦΕΡΕΤΕ ΕΝΕΡΓΑ ΣΤΗΝ ΚΟΙΝΟΤΗΤΑ! ΕΜΠΛΟΥΤΙΣΤΕ ΤΟ wiki
my blog
sockbench_linux.c source. Copyright jnk
mp
Code: Select all
#include <stdio.h>
#include <errno.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <arpa/inet.h>
#include <netdb.h>
#define MODE_LISTEN 1
#define MODE_CONNECT 2
int mode=MODE_LISTEN;
int port=5623;
char host[1024]={"localhost"};
#define DATA_LENGTH (1024*1024*1024)
#define DATA_BUFFER_LENGTH (1024*16)
char buffer[DATA_BUFFER_LENGTH];
void usage(void);
void randomize_data(void);
void do_listen(void);
void do_connect(void);
void do_bench_host(int fh);
void do_bench_client(int fh);
main(int argc, char * argv[])
{
char * v;
if (!--argc) usage();
while (argc)
{
v=*++argv;argc--;
if (*v!='-') usage();
switch (*++v)
{
case 'l':
mode=MODE_LISTEN;
break;
case 'c':
mode=MODE_CONNECT;
if (*++v) strcpy(host, v);
else {
if (!argc) usage();
v=*++argv;argc--;
if (*v=='-') usage();
strcpy(host,v);
}
break;
case 'p':
if (*++v) port=atoi(v);
else {
if (!argc) usage();
v=*++argv;argc--;
if (*v=='-') usage();
port=atoi(v);
}
if (!port) usage();
break;
default:
usage();
}
}
randomize_data();
mode == MODE_LISTEN ? do_listen() : do_connect();
}
void usage(void)
{
printf("sockbench version 0.1\n\
Usage: sockbench -l [-p port]\n\
sockbench -c host [-p port]\n\
\n\
");
exit(0);
}
void randomize_data(void)
{
int i;
for (i=0;i<DATA_BUFFER_LENGTH;i++) buffer[i]=(i*i+i);
}
void do_listen(void)
{
int fh, fhl;
struct protoent * pprotoent;
struct sockaddr_in sockaddr_in;
struct sockaddr_in remote_sockaddr_in;
socklen_t addrlen;
if (!(pprotoent = getprotobyname("tcp"))) {perror("getprotobyname");exit(0);}
if ( (fhl = socket(AF_INET, SOCK_STREAM, pprotoent->p_proto)) == -1) {perror("socket");exit(0);}
sockaddr_in.sin_family = AF_INET;
memset(&sockaddr_in.sin_addr.s_addr, 0, sizeof(struct in_addr));
sockaddr_in.sin_port = htons(port);
if ( bind(fhl, (struct sockaddr *) &sockaddr_in, sizeof(struct sockaddr)) == -1 ) {perror("bind");exit(0);}
if ( listen(fhl, 10) == -1 ) {perror("listen");exit(0);}
printf("waiting for data\n");
while (1)
{
if ( ( fh = accept(fhl, (struct sockaddr *) &remote_sockaddr_in, &addrlen)) != -1 ) break;
if (errno!=EAGAIN) {perror("accept");exit(0);}
}
printf("connected\n");
close(fhl);
do_bench_host(fh);
}
void do_connect(void)
{
int fh;
struct protoent * pprotoent;
struct in_addr in_addr;
struct sockaddr_in sockaddr_in;
struct hostent * phostent;
if (!inet_aton(host, &in_addr))
{
if ( (phostent=gethostbyname(host)) == NULL )
{
switch (h_errno)
{
case HOST_NOT_FOUND:
fprintf(stderr, "%s: host not found", host);
break;
case NO_ADDRESS:
fprintf(stderr, "%s: no address for host",host);
break;
default:
fprintf(stderr, "%s: name server error",host);
break;
}
exit(0);
}
else
{
memcpy(&in_addr.s_addr, phostent->h_addr_list[0], phostent->h_length);
}
}
if (!(pprotoent = getprotobyname("tcp"))) {perror("pprotoent");exit(0);}
if ( (fh = socket(AF_INET, SOCK_STREAM, pprotoent->p_proto)) == -1) {perror("socket");exit(0);}
sockaddr_in.sin_family = AF_INET;
memcpy(&sockaddr_in.sin_addr.s_addr, &in_addr, sizeof(in_addr));
sockaddr_in.sin_port = htons(port);
if (connect(fh, (struct sockaddr *) &sockaddr_in, sizeof(struct sockaddr))) {perror("connect");exit(0);}
printf("connected\n");
do_bench_client(fh);
}
void do_bench_host(int fh)
{
int i=0, bytesread, t1, t2;
printf("receiving data\n");
t1=t2=time(NULL);
while (i<DATA_LENGTH)
{
while ( (bytesread=read(fh, buffer, DATA_BUFFER_LENGTH)) == -1 && errno == EAGAIN ) ;
if (bytesread==-1) {perror("read");exit(0);}
if (bytesread==0) {fprintf(stderr, "eof");exit(0);}
i+=bytesread;
if (time(NULL)>t2)
{
t2=time(NULL);
fprintf(stdout, "%i (%i bytes/sec) \r", i, i/(t2-t1));
fflush(stdout);
}
}
close(fh);
printf("\ndone\n");
exit(0);
}
void do_bench_client(int fh)
{
int i=0, towrite, t1, t2;
printf("sending data\n");
t1=t2=time(NULL);
while (i<DATA_LENGTH)
{
towrite = DATA_LENGTH-i > DATA_BUFFER_LENGTH ? DATA_BUFFER_LENGTH : DATA_LENGTH-i;
if ( write(fh, buffer, towrite) != towrite ) {perror("write");exit(0);}
i+=towrite;
if (time(NULL)>t2)
{
t2=time(NULL);
fprintf(stdout, "%i (%i bytes/sec) \r", i, i/(t2-t1));
fflush(stdout);
}
}
close(fh);
printf("\ndone\n");
exit(0);
}
- korkakak
- AMD Athlon
- Posts: 992
- Joined: Wed Mar 07, 2007 11:52 pm
- PWMN Wind Node ID: 87
- Location: Πλατεία Όλγας
H randomize εκ πρώτης οψεως δείχνει καλά αποτελέσματα με πολύ καλή κατανομή της cdf. Στον χ είναι τα σύμβολα (byte represented sto 10diko) Στον y η η πιθανότητα P(X<=x) .
Μάλλον κάτι άλλο φταίει για την ασυνέπεια πραγματικών και sockbench based αποτελεσμάτων.
Μάλλον κάτι άλλο φταίει για την ασυνέπεια πραγματικών και sockbench based αποτελεσμάτων.
Voilà! In view, a humble vaudevillian veteran, cast vicariously as both victim and villain by the vicissitudes of Fate. This visage, no mere veneer of vanity, is a vestige of the vox populi, now vacant, vanished. However, this valorous visitation of a by-gone vexation, stands vivified and has vowed to vanquish these venal and virulent vermin van-guarding vice and vouchsafing the violently vicious and voracious violation of volition.
ΠΡΟΣΦΕΡΕΤΕ ΕΝΕΡΓΑ ΣΤΗΝ ΚΟΙΝΟΤΗΤΑ! ΕΜΠΛΟΥΤΙΣΤΕ ΤΟ wiki
my blog
ΠΡΟΣΦΕΡΕΤΕ ΕΝΕΡΓΑ ΣΤΗΝ ΚΟΙΝΟΤΗΤΑ! ΕΜΠΛΟΥΤΙΣΤΕ ΤΟ wiki
my blog
@korki: Εγώ έκανα κάτι πιο πρακτικό. Ένα file με 1 block 16KB με data generated από την randomise του sockbench συμπιέζεται με gzip στα 600 bytes. Αντίθετα, αν χρησιμοποιηθεί η random(), το ίδιο block δε συμπιέζεται καθόλου.
mp
edit: Για να μη χαλάμε το παρόν thread, μπορούν να μεταφερθούν σε ένα νέο thread "Περί sockbench"
mp
edit: Για να μη χαλάμε το παρόν thread, μπορούν να μεταφερθούν σε ένα νέο thread "Περί sockbench"