Linux: network: tcp:__sk_mem_raise_allocated;确保公平

之前看这个函数里有一个地方没有看懂,代码如下:

cpp 复制代码
       if (sk_has_memory_pressure(sk)) {
              int alloc;

              if (!sk_under_memory_pressure(sk))
                     return 1;
              alloc = sk_sockets_allocated_read_positive(sk);  
              if (sk_prot_mem_limits(sk, 2) > alloc *
                  sk_mem_pages(sk->sk_wmem_queued +
                            atomic_read(&sk->sk_rmem_alloc) +
                            sk->sk_forward_alloc))
                     return 1;
       }

今天在网上找了一下,搜到下面的链接,里面有一个解释是:

https://lore.kernel.org/all/20231019120026.42215-2-wuyun.abel@bytedance.com/

Try to be fair among all the sockets under global pressure by allowing the ones that below average usage to raise.

尝试在全局压力下的所有套接字之间保持一个公平,允许低于平均使用率的套接字升高,高使用内存的socket不让申请内存。

相关推荐
Charles_go31 分钟前
C#中级48、Debug版本和Release版本有什么区别
java·linux·c#
baivfhpwxf20231 小时前
用TCP服务端向多个客户端分发图片,客户端接收并处理图片,再将处理结果返回给服务端
服务器·开发语言·网络·tcp/ip·c#
cyber_两只龙宝1 小时前
mysql实战项目:keepalived高可用双主架构集群+数据监控(附解析和命令)
linux·运维·mysql·云原生·架构·集群
一起学开源1 小时前
实战总结:BACnet/IP 跨网段通讯的两种解决方案(BBMD 与 Foreign Device)
运维·网络·物联网·bacnet·网络协议·tcp/ip
tan180°1 小时前
Linux网络TCP(终)(14)
linux·网络·tcp/ip
ALex_zry2 小时前
MySQL运维管理技术手册:从监控到自动化实战
运维·mysql·自动化
dyxal2 小时前
Vim插件深度探索:打造终极开发环境
linux·编辑器·vim
小雪_Snow2 小时前
CentOS 7 安装 docker 教程
linux·docker·centos
凤凰战士芭比Q2 小时前
Linux部署基于Django的博客系统
linux·运维·django
源来猿往2 小时前
高并发之nginx架构
运维·nginx