carleone Опубликовано 21 июня, 2011 · Жалоба Добрый день, коллеги. Поднял сабж. Два lagg (вход/выход), тюнинг, MPD5.5 собирает netflow. По vmstat -z вижу что увеличивается счетчик FAILURES на позиции NetFlow cache: # vmstat -z ITEM SIZE LIMIT USED FREE REQUESTS FAILURES UMA Kegs: 208, 0, 79, 6, 79, 0 UMA Zones: 960, 0, 79, 1, 79, 0 UMA Slabs: 568, 0, 4431, 357, 8119, 0 UMA RCntSlabs: 568, 0, 37339, 6, 37339, 0 UMA Hash: 256, 0, 0, 15, 3, 0 16 Bucket: 152, 0, 189, 11, 189, 0 32 Bucket: 280, 0, 423, 11, 427, 1 64 Bucket: 536, 0, 736, 6, 753, 37 128 Bucket: 1048, 0, 1493, 199, 941336, 536 VM OBJECT: 216, 0, 46314, 3582, 6041003, 0 MAP: 232, 0, 7, 25, 7, 0 KMAP ENTRY: 120, 277605, 259, 1477, 231731, 0 MAP ENTRY: 120, 0, 881, 9318, 13323324, 0 DP fakepg: 120, 0, 0, 0, 0, 0 SG fakepg: 120, 0, 0, 0, 0, 0 mt_zone: 2056, 0, 207, 52, 207, 0 16: 16, 0, 5954, 3958, 10948191, 0 32: 32, 0, 10866, 4587, 1284742692, 0 64: 64, 0, 6297, 5071, 6159039, 0 128: 128, 0, 22193, 9040, 2963360, 0 256: 256, 0, 58051, 8054, 2586309256, 0 512: 512, 0, 4312, 3395, 7714622, 0 1024: 1024, 0, 307, 1105, 247887, 0 2048: 2048, 0, 599, 1101, 2989, 0 4096: 4096, 0, 227, 1388, 402296, 0 Files: 80, 0, 109, 2366, 5055083, 0 TURNSTILE: 136, 0, 3277, 323, 3277, 0 umtx pi: 96, 0, 0, 0, 0, 0 MAC labels: 40, 0, 0, 0, 0, 0 PROC: 1136, 0, 45, 1230, 253630, 0 THREAD: 1120, 0, 1506, 1770, 144196, 0 SLEEPQUEUE: 80, 0, 3277, 522, 3277, 0 VMSPACE: 392, 0, 28, 1372, 289093, 0 cpuset: 72, 0, 57, 343, 196, 0 audit_record: 952, 0, 0, 0, 0, 0 mbuf_packet: 256, 0, 66946, 7422, 2668444338, 0 mbuf: 256, 0, 4, 4093, 3165129665, 0 mbuf_cluster: 2048, 400000, 74368, 6, 74368, 0 mbuf_jumbo_page: 4096, 12800, 0, 152, 166, 0 mbuf_jumbo_9k: 9216, 6400, 0, 0, 0, 0 mbuf_jumbo_16k: 16384, 3200, 0, 0, 0, 0 mbuf_ext_refcnt: 4, 0, 0, 0, 0, 0 NetGraph items: 72, 65540, 0, 2958, 2856406, 0 NetGraph data items: 72, 65540, 1, 2232, 2645441708, 0 ttyinq: 160, 0, 135, 465, 765, 0 ttyoutq: 256, 0, 72, 243, 408, 0 g_bio: 232, 0, 0, 8464, 405343, 0 ata_request: 320, 0, 0, 2868, 101346, 0 ata_composite: 336, 0, 0, 0, 0, 0 VNODE: 472, 0, 95798, 1482, 323900, 0 VNODEPOLL: 112, 0, 1, 65, 1, 0 S VFS Cache: 108, 0, 73923, 28443, 311061, 0 L VFS Cache: 328, 0, 22869, 219, 25611, 0 NAMEI: 1024, 0, 0, 668, 6429193, 0 DIRHASH: 1024, 0, 1930, 374, 2260, 0 pipe: 728, 0, 5, 965, 133616, 0 ksiginfo: 112, 0, 1265, 1738, 6148, 0 itimer: 344, 0, 0, 0, 0, 0 KNOTE: 128, 0, 0, 406, 1873, 0 socket: 680, 25602, 43, 833, 1911099, 0 ipq: 56, 12537, 0, 0, 0, 0 udp_inpcb: 336, 25608, 9, 816, 1780557, 0 udpcb: 16, 25704, 9, 3351, 1780557, 0 tcp_inpcb: 336, 25608, 8, 146, 25, 0 tcpcb: 944, 25600, 8, 88, 25, 0 tcptw: 72, 5150, 0, 200, 5, 0 syncache: 144, 15366, 0, 182, 11, 0 hostcache: 136, 15372, 0, 196, 9, 0 tcpreass: 40, 25032, 0, 0, 0, 0 sackhole: 32, 0, 0, 202, 1, 0 ripcb: 336, 25608, 1, 714, 53945, 0 unpcb: 240, 25600, 15, 625, 76555, 0 rtentry: 200, 0, 4106, 2316, 26342, 0 IPFW dynamic rule: 120, 0, 0, 0, 0, 0 selfd: 56, 0, 2049, 2865, 115271476, 0 SWAPMETA: 288, 116519, 0, 0, 0, 0 Mountpoints: 752, 0, 5, 20, 5, 0 FFS inode: 168, 0, 95764, 1608, 323823, 0 FFS1 dinode: 128, 0, 0, 0, 0, 0 FFS2 dinode: 256, 0, 95764, 1601, 323823, 0 NetFlow cache: 80, 262160, 191175, 70985, 29063801, 939849 В колонке LIMITS находится значение 262160, при большой нагрузке (800 сессий) его не хватает и растет FAILURES. Подскажите, где можно увеличить netflow кэш? Исходники проясняют ситуацию смутно, так как не силен в Си и в архитектуре BSD. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 21 июня, 2011 · Жалоба grep -r "NetFlow cache" /usr/src/sys/ /usr/src/sys/netgraph/netflow/netflow.c: priv->zone = uma_zcreate("NetFlow cache", sizeof(struct flow_entry), открываем, смотрим что дальше:... uma_ctor_flow, uma_dtor_flow, NULL, NULL, UMA_ALIGN_CACHE, 0); uma_zone_set_max(priv->zone, CACHESIZE); grep -r "CACHESIZE" /usr/src/sys/netgraph/netflow/ /usr/src/sys/netgraph/netflow/netflow.c: if (atomic_load_acq_32(&priv->info.nfinfo_used) >= CACHESIZE) /usr/src/sys/netgraph/netflow/netflow.c: uma_zone_set_max(priv->zone, CACHESIZE); /usr/src/sys/netgraph/netflow/ng_netflow.h:#define CACHESIZE (65536*4) /usr/src/sys/netgraph/netflow/ng_netflow.h:#define CACHELOWAT (CACHESIZE * 3/4) /usr/src/sys/netgraph/netflow/ng_netflow.h:#define CACHEHIGHWAT (CACHESIZE * 9/10) Итого: в файле: /usr/src/sys/netgraph/netflow/ng_netflow.h: меняете: #define CACHESIZE (65536*4), пересобираете ноду или всё ядро, если оно вкомпилено в него. Ставите на нос зарубку: после обновления системы/исходникв/ядра - править значение. PS: можете поправить сами чтобы оно из sysctl бралось %) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
apm Опубликовано 21 июня, 2011 · Жалоба тюнинг можете показать? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
carleone Опубликовано 22 июня, 2011 · Жалоба меняете: #define CACHESIZE (65536*4), пересобираете ноду или всё ядро, если оно вкомпилено в него. Ставите на нос зарубку: после обновления системы/исходникв/ядра - править значение. PS: можете поправить сами чтобы оно из sysctl бралось %) Cпасибо за анализ! =) Попробую поменять и собрать. тюнинг можете показать? В личке. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
carleone Опубликовано 23 июня, 2011 · Жалоба grep -r "NetFlow cache" /usr/src/sys/ /usr/src/sys/netgraph/netflow/netflow.c: priv->zone = uma_zcreate("NetFlow cache", sizeof(struct flow_entry), открываем, смотрим что дальше:... uma_ctor_flow, uma_dtor_flow, NULL, NULL, UMA_ALIGN_CACHE, 0); uma_zone_set_max(priv->zone, CACHESIZE); grep -r "CACHESIZE" /usr/src/sys/netgraph/netflow/ /usr/src/sys/netgraph/netflow/netflow.c: if (atomic_load_acq_32(&priv->info.nfinfo_used) >= CACHESIZE) /usr/src/sys/netgraph/netflow/netflow.c: uma_zone_set_max(priv->zone, CACHESIZE); /usr/src/sys/netgraph/netflow/ng_netflow.h:#define CACHESIZE (65536*4) /usr/src/sys/netgraph/netflow/ng_netflow.h:#define CACHELOWAT (CACHESIZE * 3/4) /usr/src/sys/netgraph/netflow/ng_netflow.h:#define CACHEHIGHWAT (CACHESIZE * 9/10) Итого: в файле: /usr/src/sys/netgraph/netflow/ng_netflow.h: меняете: #define CACHESIZE (65536*4), пересобираете ноду или всё ядро, если оно вкомпилено в него. Ставите на нос зарубку: после обновления системы/исходникв/ядра - править значение. PS: можете поправить сами чтобы оно из sysctl бралось %) Иван, спасибо, помогло. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...