mirror of
https://github.com/pavel-odintsov/fastnetmon
synced 2024-12-04 19:08:22 +01:00
big optimization
This commit is contained in:
parent
1efd8fce10
commit
245a9d308e
2
Makefile
2
Makefile
@ -29,7 +29,7 @@ ifeq ($(REDIS_SUPPORT), yes)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(ENGINE), PCAP)
|
ifeq ($(ENGINE), PCAP)
|
||||||
LIBS = -lpcap
|
LIBS += -lpcap
|
||||||
endif
|
endif
|
||||||
|
|
||||||
fastnetmon: libipulog.o fastnetmon.o
|
fastnetmon: libipulog.o fastnetmon.o
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
4) Перейти на cap_admin при работе от штатного юзера
|
4) Перейти на cap_admin при работе от штатного юзера
|
||||||
5) Оптимизировать belongs_to_network на префиксном дереве
|
5) Оптимизировать belongs_to_network на префиксном дереве
|
||||||
6) Не создавайте больших списков сетей! Будет тормозить!
|
6) Не создавайте больших списков сетей! Будет тормозить!
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Author: pavel.odintsov@gmail.com */
|
/* Author: pavel.odintsov@gmail.com */
|
||||||
@ -32,7 +31,7 @@
|
|||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <map>
|
#include <map>
|
||||||
//#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
@ -130,7 +129,7 @@ typedef struct {
|
|||||||
int out_packets;
|
int out_packets;
|
||||||
} map_element;
|
} map_element;
|
||||||
|
|
||||||
typedef map <uint32_t, map_element> map_for_counters;
|
typedef unordered_map <uint32_t, map_element> map_for_counters;
|
||||||
// data structure for storing data in Vector
|
// data structure for storing data in Vector
|
||||||
typedef pair<uint32_t, map_element> pair_of_map_elements;
|
typedef pair<uint32_t, map_element> pair_of_map_elements;
|
||||||
|
|
||||||
@ -175,6 +174,9 @@ time_t start_time;
|
|||||||
// стандартно у нас смещение для типа DLT_EN10MB, Ethernet
|
// стандартно у нас смещение для типа DLT_EN10MB, Ethernet
|
||||||
int DATA_SHIFT_VALUE = 14;
|
int DATA_SHIFT_VALUE = 14;
|
||||||
|
|
||||||
|
// начальный размер unordered_map для хранения данных
|
||||||
|
int MAP_INITIAL_SIZE = 1024;
|
||||||
|
|
||||||
vector<subnet> our_networks;
|
vector<subnet> our_networks;
|
||||||
vector<subnet> whitelist_networks;
|
vector<subnet> whitelist_networks;
|
||||||
|
|
||||||
@ -447,6 +449,9 @@ bool load_our_networks_list() {
|
|||||||
subnet white_subnet = std::make_pair(convert_ip_as_string_to_uint("159.253.17.0"), convert_cidr_to_binary_netmask(24));
|
subnet white_subnet = std::make_pair(convert_ip_as_string_to_uint("159.253.17.0"), convert_cidr_to_binary_netmask(24));
|
||||||
whitelist_networks.push_back(white_subnet);
|
whitelist_networks.push_back(white_subnet);
|
||||||
|
|
||||||
|
// Так как мы используем неотсортированный map, то для оптимизации его работы стоит указать требуемый размер хэша
|
||||||
|
DataCounter.reserve(MAP_INITIAL_SIZE);
|
||||||
|
|
||||||
vector<string> networks_list_as_string;
|
vector<string> networks_list_as_string;
|
||||||
// если мы на openvz ноде, то "свои" IP мы можем получить из спец-файла в /proc
|
// если мы на openvz ноде, то "свои" IP мы можем получить из спец-файла в /proc
|
||||||
string our_networks_netmask;
|
string our_networks_netmask;
|
||||||
|
Loading…
Reference in New Issue
Block a user