Код Java для расчета пакетов в секунду

У меня есть метод, который получает пакеты от коммутатора к контроллеру Floodlight в SDN, что означает, что этот метод запускается для каждого нового поступающего пакета. Я хочу рассчитать пакет в секунду этим методом.

Это моя попытка; верно?

int CLoad,avergeLoad =0;
final String switchId = sw.getStringId();
        CLoad = CLoad + 1;
        avergeLoad = CLoad;
        loadTable.put(switchId, avergeLoad);
        ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
        exec.scheduleAtFixedRate(new Runnable() 
               {
                public void run() 
                  {
                    avergeLoad =(avergeLoad + CLoad)/2;
                loadTable.put(switchId, avergeLoad);
                   CLoad=0;
                  }
               }, 40, 1000, TimeUnit.SECONDS); 

person user1888020    schedule 24.10.2015    source источник
comment
Это даже не должно компилироваться. Вы ссылаетесь на неназначенную переменную. Непонятно, что вы пытаетесь сделать, и никто не может сказать, правильно ли это, даже после компиляции.   -  person erickson    schedule 22.11.2015


Ответы (2)


Вы можете использовать метр метрик

Счетчики измеряют скорость событий несколькими различными способами. Средняя скорость — это средняя частота событий. Как правило, это полезно для мелочей, но, поскольку он представляет собой общую скорость за все время существования вашего приложения (например, общее количество обработанных запросов, деленное на количество секунд, в течение которых процесс выполнялся), он не дает ощущения давности. . К счастью, счетчики также регистрируют три различных экспоненциально взвешенных скользящих средних: 1-, 5- и 15-минутные скользящие средние.

Мейвен:

<dependency>
    <groupId>io.dropwizard.metrics</groupId>
    <artifactId>metrics-core</artifactId>
    <version>3.1.2</version>
</dependency>

Образец кода:

//Setup the reporter
ConsoleReporter reporter = ConsoleReporter.forRegistry(metrics)
       .convertRatesTo(TimeUnit.SECONDS)
       .convertDurationsTo(TimeUnit.MILLISECONDS)
       .build();
   reporter.start(1, TimeUnit.SECONDS);

//Initialize Metrics Metter
final Meter getRequests = registry.meter(name(WebProxy.class, "get-requests", "requests"));

// Mark when event occurs
getRequests.mark();

Ссылка:

  1. Начало работы
  2. Метрика
person Tho    schedule 24.11.2015

Вы можете использовать реализацию проекта Openflowplugin и адаптировать ее под свои нужды. Он содержит модуль Statistic Manager, который получает много полезной информации о потоках, портах, счетчиках, очередях и т. д.

Ссылка: https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin:Statistics

person Icaro Camelo    schedule 24.11.2015