Видео смотреть бесплатно

Смотреть подборки видео

Официальный сайт itartass-sib 24/7/365

Смотреть видео бесплатно

WeLinux.ru

22.07.09 14:54exelens

Есть вопрос!Измерить скорость работы в сети

Появилась задача, узнать какова скорость работы по сети.

Как грамотно это сделать? Возможно ли сделать это в консоли без ГУёв?

(Этот вопрос пришёл мне в почту.)
+4
m0nhawk22.07.09 15:31# +1
Вряд ли есть именно для измерения скорости, можно посмотреть bmon и iftop. Но придётся что-то качать. Как вариант ещё wget.
m0nhawk22.07.09 15:31# +1
Но всё-таки самый простой - спросить у провайдера :)
cppmm22.07.09 15:48# +2
Провайдеры нередко, скажем так, слегка кривят душой, отвечая на вопросы по поводу скорости. :)
m0nhawk22.07.09 15:49# +0
В договоре или тарифном плане обычно это должно быть.
cppmm22.07.09 15:58# +2
У прошлого прова в договоре было указано "До мегабита". Когда я пришёл к ним с распечаткой статистики, где явно было видно, что скорость в основном колебалась от 512кбит до ~700кбит, мне показали договор и объяснили, что "до мегабита" - это значит "от нуля до мегабита" в зависимости от нагрузки на канал. Если хочу мегабит, то предложили сменить тарифный план на предусматривающий скорость "Один мегабит" с ценой в два раза выше. Сменил прова из принципа.
У следующего прова, к которому подключился, чётко сказано было "Два мегабита". Сначала всё так и было, а потом скорость ухудшилась и не поднималась выше полутора тысяч килобит. К ним я тоже пришёл с распечаткой, после чего приехали техники, посмотрели, проверили и выяснили, что в моём подъезде повреждён телефонный кабель(а инет через ADSL). Кабель заменили и всё стало прекрасно.
Как говорится, доверяй (провайдеру), но проверяй. :)
zivot_je_cudo22.07.09 15:42# +0
Если речь оскорости интернета, то http://www.speedtest.net/ =)
Если лан, то вгет.
m0nhawk22.07.09 15:45# +0
Написано же -
без ГУёв
lwilis22.07.09 15:44# +1
time wget url:/путь/к/эталонному_файлу
файл обычно от 500К до 1500К
утилита time - покажет время, потраченное на операцию. Дальше арифметика.
assaron22.07.09 23:43# +0
wget и так пишет скорость вроде
cppmm22.07.09 15:47# +3
man ifstat
Утилита показывает текущую скорость передачи как входящих, так и исходящих потоков на любом интерфейсе. Запустив её, можно попробовать загрузить канал несколкими парралельными закачками чего-нибудь большого. Я обычно ставил несколько загрузок с kernel.org, и несколько с образами дисков каких-нибудь дистров. И скорость проверяю, и полезные вещи скачиваю. :)
evgenyl22.07.09 16:01# +0
А что именно вы подразумеваете под скорость работы в сети ?
пропускную способность пакетов, объема, латентность ?
evgenyl22.07.09 16:07# +1
Вот это можно почитать
Kraplax22.07.09 16:37# +5
Хоть я и приверженец Console-free идеологии, все же раз уж попросили (да и такая задача легче решается как раз в консоли), то вот решение:
  1. Ставим утилиту iperf:
    Для ArchLinux
    1
    2
    yaourt -S iperf
    pacman -S iperf

    Для Ubuntu/Debian:
    1
    2
    apt-get install iperf
    aptitude install iperf

    Для Mandriva:
    urpmi install iperf

    Для FreeBSD:
    1
    2
    cd /usr/ports/benchmarks/iperf
    make install clean

    Для CentOS:
    yum install iperf

    Для Windows:
    На официальной странице iperf для Windows можете найти прямую ссылку на утилиту iperf, которую желательно кинуть в папку, содержащуюся в переменной PATH (например, C:\WINDOWS)
  2. Запускаем на одной машине в сети iperf в режиме сервера:

    iperf -s -p 54321 -D

    где -s говорит о том, что iperf запускаем в режиме сервера;
    число после -p указывает на используемый для связи порт (по умолчанию используется порт 5001);
    параметр -D говорит о том, что iperf запускается в режиме демона
    В результате получим следующий вывод:
    1
    2
    3
    4
    5

    ------------------------------------------------------------
    Server listening on TCP port 54321
    TCP window size: 65.3 KByte (default)
    ------------------------------------------------------------

    при этом терминал будет занят iperf, если опция -D не была указана. В таком случае результаты тестов будут выводиться в терминал по мере их поступления и обработки:
    1
    2
    3
    4
    5
    6
    7
    8
    iperf -s -p 54321
    ------------------------------------------------------------
    Server listening on TCP port 54321
    TCP window size: 8.00 KByte (default)
    ------------------------------------------------------------
    [1840] local 172.16.0.5 port 54321 connected with 172.16.0.1 port 56059
    [ ID] Interval       Transfer     Bandwidth
    [1840]  0.0-10.1 sec  4.31 MBytes  3.59 Mbits/sec

    Если же сервер был запущен в режиме демона (опция -D), то процесс не будет занимать терминал, а только выдаст:
    1
    2
    Running Iperf Server as a daemon
    The Iperf daemon process ID : 5774
    естественно, у вас ID будет другим и всегда разным
  3. Запускаем на другой машине в сети iperf в режиме клиента:

    iperf -c server_ip -p 54321 -d

    где -c указывает на то, что iperf запущен в режиме клиента;
    число после -p устанавливает порт для связи (используем тот же порт, что и на сервере)
    параметр -d заставит iperf провести "двустороннюю" проверку производительности - скорость до сервера и скорость до клиента (можно убрать этот параметр, так как вряд ли он нужен для обычных пользователей);
    server_ip - IP адрес машины, на которой запущен iperf в режиме сервера.
  4. В результате получим примерно вот такой вывод:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    iperf -c 172.16.0.1 -d -p 54321
    ------------------------------------------------------------
    Server listening on TCP port 54321
    TCP window size: 8.00 KByte (default)
    ------------------------------------------------------------
    ------------------------------------------------------------
    Client connecting to 172.16.0.1, TCP port 54321
    TCP window size: 8.00 KByte (default)
    ------------------------------------------------------------
    [1824] local 172.16.0.5 port 2455 connected with 172.16.0.1 port 54321
    [1780] local 172.16.0.5 port 54321 connected with 172.16.0.1 port 60395
    [ ID] Interval       Transfer     Bandwidth
    [1824]  0.0-10.1 sec  2.31 MBytes  1.93 Mbits/sec
    [1780]  0.0-10.1 sec  2.02 MBytes  1.68 Mbits/sec

    Это на стороне клиента в системе Windows при испольовании двустороннего теста.
Собственно, если вывод этой утилиты вам ничего не говорит, то попробуйте поиграться с параметрами, прочитав man iperf. Также есть другие утилиты для тестирования производительности сети (такие как ntop, netperf, Bandwidth Test Controller (BWCTL), thrulay и другие). Думаю, написал и так многовато, так что остальные утилиты разберете сами, либо, если нужен постоянный мониторинг, то советую поискать GUI приложения для повседневного использования.
cooler22.07.09 17:40# +1
Я подобное с исользованием netcat делал, но с подсчетом через iftop.
За iperf спасибо, засейвил себе. Меньше лишних действий.
m0nhawk22.07.09 17:52# +0
Чёрт, а ведь действительно быстрее…
exelens22.07.09 17:53# +0
Спасибо!!
warchief22.07.09 18:00# +0
или так:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
typedef unsigned long long ull;
int parseDevFile(const char * iface, ull *bRx, ull *pRx,
                  ull *bTx, ull *pTx)
 {
    FILE * fp = NULL;
    char * line = NULL;
    unsigned int len = 0;
    fp = fopen("/proc/net/dev", "r");
    if(fp==NULL)
    {
        return -1;
    }    
    while(getline(&line,&len,fp)!= -1)
    {
        if(strstr(line,iface)!=NULL)
        {
                // following line must be corrected for each distro, due the difference in /proc/net/dev!
            sscanf(strstr(line,":")+1,"%llu%llu%*u%*u%*u%*u%*u%*u%llu%llu",
                   bRx, pRx, bTx, pTx);
        }
    }
    fclose(fp);
    free(line);
    return 0;
 }

 void dumpInterfaceUsage(const char * iface)
 {
     ull ifaceBRxOld=0, ifaceBTxOld=0, ifacePRxOld=0, ifacePTxOld=0;
     ull ifaceBRxNew=0, ifaceBTxNew=0, ifacePRxNew=0, ifacePTxNew=0;
     const int SLEEP_TIME = 2;
     if(parseDevFile(iface,&ifaceBRxOld,&ifacePRxOld,&ifaceBTxOld,&ifacePTxOld)==-1) return;
     //sleep(SLEEP_TIME);
     while(1)
     {
         if(parseDevFile(iface,&ifaceBRxNew,&ifacePRxNew,&ifaceBTxNew,&ifacePTxNew)==-1) return;
         printf("%s In: %8.2f kbyte/s  %5llu P/s  Out: %8.2f kbyte/s %5llu P/s\n", iface,
                (ifaceBRxNew-ifaceBRxOld)/(SLEEP_TIME * 1024.0),
                (ifacePRxNew-ifacePRxOld)/SLEEP_TIME,
                (ifaceBTxNew-ifaceBTxOld)/(SLEEP_TIME * 1024.0),
                (ifacePTxNew-ifacePTxOld)/SLEEP_TIME);
         ifaceBRxOld=ifaceBRxNew; ifaceBTxOld=ifaceBTxNew;
         ifacePRxOld=ifacePRxNew; ifacePTxOld=ifacePTxNew;
         sleep(SLEEP_TIME);
     }
 }
 
 int main(int argc, char **argv)
 {
     if(argc != 2)
    {
         printf("Usage: %s interfacename\n", argv[0]);
        exit(1);
    }
    dumpInterfaceUsage(argv[1]);
       return 0;
 }

Kraplax22.07.09 20:07# +0
некультурно выкладывать куски кода простым текстом при наличии тега code (тем более с подсветкой). И зачем было каждую вторую строку делать пустой?
пофиксил, но недоволен.
Ну, а для тех кому надо - компилится это дело так:
сохраняете все это в файлик с расширением .c (например, performance_test.c) и компилите командой:
gcc performance_test.c -o perf_test
После чего можете запускать утилиту:

./perf_test eth0

или

./perf_test wlan0

После чего утилита будет непрерывно выводить в stdout по одной строке статистики:
1
2
3
4
5
6
7
8
9
wlan0 In:     0.00 kbyte/s      0 P/s  Out:     0.00 kbyte/s     0 P/s
wlan0 In:     0.03 kbyte/s      0 P/s  Out:     0.09 kbyte/s     0 P/s
wlan0 In:     0.03 kbyte/s      0 P/s  Out:     0.09 kbyte/s     0 P/s
wlan0 In:     0.34 kbyte/s      4 P/s  Out:     0.80 kbyte/s     4 P/s
wlan0 In:     0.03 kbyte/s      0 P/s  Out:     0.09 kbyte/s     0 P/s
wlan0 In:     0.05 kbyte/s      1 P/s  Out:     0.12 kbyte/s     1 P/s
wlan0 In:     0.03 kbyte/s      0 P/s  Out:     0.09 kbyte/s     0 P/s
wlan0 In:     0.03 kbyte/s      0 P/s  Out:     0.09 kbyte/s     0 P/s
...

Однако, это скорее монитор, чем действительно тестер "производительности" сети - он отобразит вам текущую скорость передачи в килобайтах и пакетах в нисходящем и восходящем потоках. Чтобы узнать пропускную способность нужно параллельно запустить передачу по сети какого-нибудь файла метров на 10-300 (в зависимости от ожидаемой пропускной способности сети). А потом, как уже писали, арифметика.
warchief22.07.09 20:55# +1
извини, первый комментарий здесь - кликал мышью быстрее чем думал, а функции редактирования комментариев не нашёл.
Kraplax22.07.09 23:43# +0
Функции редактирования комментариев недоступны пользователям. Для этого есть предпросмотр комментария, чтобы увидеть сразу как это будет выглядеть.
Craftuser24.07.09 03:39# +0
iftop и файлик с ближайшего сервака на закачку.

Top блогов (все)
Топ пользователей Топ блогов
Топ пользователей Топ блогов
Top пользователей (все)
Топ пользователей Топ блогов
В сети: xameleon, matweew, fun

Новенькие: wer_wolf, GehrelethGrey, fumalhaut, uafz, philosoft
welinux.ru
Идея сайта exelens; Движок 0byte, разработчик nvbn; Дизайн - Astramak

Смотреть онлайн бесплатно

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн