iovisor/bcc

Incorrect calculation of recv throughput in tcptop.py

Open

#5,352 创建于 2025年7月4日

在 GitHub 查看
 (11 评论) (6 反应) (0 负责人)C (22,409 star) (4,051 fork)batch import
bughelp wanted

描述

tcp_cleanup_rbuf is called several times in a loop inside tcp_recvmsg. At the same time, it is passed the accumulated parameter "copied". Thus, the same data is taken into account several times.

int tcp_recvmsg(...) {
     ...
     int copied = 0;
     ...
     do {
         ...
         tcp_cleanup_rbuf(sk, copied);
         ...
         copied += used;
         ...
     } while (len > 0);
     
     tcp_cleanup_rbuf(sk, copied);
     return copied;
     ...
}

贡献者指南