Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

NTTコミュニケーションズ インターンシップレポート

NTTコミュニケーションズ インターンシップレポート

udon-yuya

March 02, 2021
Tweet

More Decks by udon-yuya

Other Decks in Technology

Transcript

  1. バグとの出会い ・最大フローを7Mにしたときに、メモリアロケーションエラーが発生した。 Error mapping KSync memory. Device: /dev/flow; /dev/flow: Cannot

    allocate memory contrail-vrouter-agent: controller/src/vnsw/agent/vrouter/ksync/ksync_memory.cc:116: void KSyncMemory::Mmap(bool, void*, bool): Assertion `0' failed.
  2. バグとの出会い ・最大フロー7M時、フローテーブルのサイズは { 7M + 1,468,456(overflow table) } * 256

    = 2,254,962,688 bytes ・これはintの最大値 2,147,483,647 より大きい。 ・オーバフローによって正常に処理が行われていない可能性がある。
  3. 実際に ・vRouterカーネルモジュールがメモリをアロケートするときは、size_t宣言。 ・vRouter Agentが保持するフローテーブルのサイズはint宣言。 const char * vr_table_map(int major, unsigned

    int table, const char *table_path, size_t size, void **mem) { … *mem = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0); … } https://github.com/tungstenfabric/tf-vrouter/blob/R2011/utils/unix_util.c class KSyncMemory { … // Size of flow table memory int table_size_; … }; https://github.com/tungstenfabric/tf-con troller/blob/R2011/src/vnsw/agent/vrout er/ksync/ksync_memory.h
  4. qperf 4Mフロー ubuntu@ubuntu:~$ qperf -vvs -t 30 192.168.56.6 tcp_lat tcp_lat:

    latency = 51.1 us msg_rate = 19.6 K/sec loc_send_bytes = 293 KB loc_recv_bytes = 293 KB loc_send_msgs = 293,312 loc_recv_msgs = 293,311 rem_send_bytes = 293 KB rem_recv_bytes = 293 KB rem_send_msgs = 293,311 rem_recv_msgs = 293,311
  5. qperf 5Mフロー ubuntu@ubuntu:~$ qperf -vvs -t 30 192.168.56.9 tcp_lat tcp_lat:

    latency = 48.7 us msg_rate = 20.5 K/sec loc_send_bytes = 308 KB loc_recv_bytes = 308 KB loc_send_msgs = 307,696 loc_recv_msgs = 307,695 rem_send_bytes = 308 KB rem_recv_bytes = 308 KB rem_send_msgs = 307,695 rem_recv_msgs = 307,695
  6. qperf 7Mフロー ubuntu@ubuntu:~$ qperf -vvs -t 30 192.168.56.9 tcp_lat tcp_lat:

    latency = 45.5 us msg_rate = 22 K/sec loc_send_bytes = 329 KB loc_recv_bytes = 329 KB loc_send_msgs = 329,442 loc_recv_msgs = 329,441 rem_send_bytes = 329 KB rem_recv_bytes = 329 KB rem_send_msgs = 329,441 rem_recv_msgs = 329,441
  7. qperf 10Mフロー ubuntu@ubuntu:~$ qperf -vvs -t 30 192.168.56.9 tcp_lat tcp_lat:

    latency = 44.8 us msg_rate = 22.3 K/sec loc_send_bytes = 335 KB loc_recv_bytes = 335 KB loc_send_msgs = 335,191 loc_recv_msgs = 335,190 rem_send_bytes = 335 KB rem_recv_bytes = 335 KB rem_send_msgs = 335,190 rem_recv_msgs = 335,190