linux每个memory cgroup的lru链表是什么创建的

news2024/11/24 9:06:13
1.概述

对Linux memory子系统有基本了解的都知道,linux内核通过LRU管理物理内存,不知道是否有思考过如下问题:LRU是全局一套,还是说每个memory cgroup拥有单独的一套LRU链表直接揭晓答案:每个memory cgroup都会单独的LRU链表

2.怎么查到memcg对应的LRU链表

 内核通过mem_cgroup_lruvec->mem_cgroup_nodeinfo函数获取到memcg对应的LRU链表

3. memcg对应的LRU链表是什么时候初始化的
mem_cgroup_alloc --->alloc_mem_cgroup_per_node_info
alloc_mem_cgroup_per_node_infohttps://elixir.bootlin.com/linux/v5.4/C/ident/alloc_mem_cgroup_per_node_info

 可以看到在cgroup创建的时候,调用到mem_cgroup_alloc,进而调用alloc_mem_cgroup_per_node_info,然后memcg->nodeinfo[node] = pn和lruvec_init(&pn->lruvec)初始化了一套LRU链表,然后使用的时候通过mem_cgroup_lruvec取到这里初始化的lruvec,lruvec就包含了inactive file/active file, inactive anon,active anon等各种LRU链表,数据结构如下:

lruvec identifier - Linux source code v5.4 - BootlinElixir Cross Referencer - identifier references search for Linux (version v5.4). Searched identifier: lruvecicon-default.png?t=N7T8https://elixir.bootlin.com/linux/v5.4/C/ident/lruvec

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2086938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Typora + PicGo + Gitee 实现图片自动上传

Typora PicGo Gitee 实现图片自动上传 1.配置Gitee1.创建Gitee仓库2.设置私人令牌2. PicGo 的安装配置2.1 下载 PicGo2.2 安装 PicGo2.3 安装 PicGo 的自动上传插件2.4 Gitee 图床设置 3. Typora 安装配置3.1 安装**版本3.2 配置 PicGo 4. 上传验证 1.配置Gitee 1.创建Gitee…

字节AI辅助编程工具MarsCode,开启高效编程之旅

点击链接即可注册和使用:豆包MarsCode 一、巨头较量,MarsCode 崭露头角 在当今的编程世界中,代码补全工具层出不穷。阿里的通义灵码凭借阿里强大的技术实力,在代码补全方面表现出色,能够快速理解程序员的意图&#x…

tomcat在eclipse中起动成功,无法访问tomcat主页

最近通过geoserver的war包将,geoserver服务部署到了tomcat,发现在eclipse中启动服务后,无法访问localhost:8080主页,geoserver主页:localhost:8080/geoserver/web同样也无法访问。 只需要双击下面的server…

css画个熊猫

【html源码-一键复制查看效果】 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><style>* {margin: 0;padding: 0;box-sizing: border-box;}.box {position: relative;width: 300px;height: 260px;…

全国地铁站数据实时更新:Python + 高德地图实战

数据抓取呢&#xff0c;非常注重时效性。本篇文章记录于2024年8月&#xff0c;介绍如何使用Python和高德地图来获取中国各大城市的最新地铁站数据。通过python脚本&#xff0c;可以直接获取最新的地铁站信息&#xff0c;确保数据与高德地图的数据源同步更新&#xff0c;数据来源…

软件测学习笔记丨Linux的进程与线程

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/32047 一、简介 进程&#xff1a;在Linux中&#xff0c;进程指正在运行的程序的示例。每个进程都有一个唯一的标识符&#xff08;PID&#xff09;&#xff0c;并且可以包含代码、数据和文件描…

主控

3. 修改 etcd 数据库配置 [rootnode1 ~] # vim /etc/etcd/etcd.conf [rootnode1 ~] # cat /etc/etcd/etcd.conf #[Member] #ETCD_CORS"" ETCD_DATA_DIR "/var/lib/etcd/default.etcd" #ETCD_WAL_DIR"" #ETCD_LISTEN_PEER_URLS"http…

如何在你vs code和ide编译器使用AI

vs code举例。先看效果图 2个步骤轻松拥有 1、注册豆包AI账号&#xff1a;点击注册 2、在vs code中安装&#xff1a; 第一种方法&#xff1a;快速安装 第二种方法&#xff1a;手动安装, 第1步&#xff1a;安装 Visual Studio Code 后&#xff0c;左侧导航栏上点击扩展。 第2步…

Avalonia 播放 VLC 视频(Windows / Linux)

【演示效果】 一、开发步骤 1. 版本与引用类库 Avalonia 版本:11.0.11 Windows上只需要安装以下类库: LibVLCSharp 3.8.5 LibVLCSharp.Avalonia 3.8.5 VideoLAN.LibVLC.Windows 3.0.20 引用截图: 2. 前端代码 <UserControl xmlns="https://github.com/avaloni…

代码随想录 刷题记录-20 动态规划(4)多重背包理论、背包问题总结

一、多重背包基本理论 有N种物品和一个容量为V 的背包。第i种物品最多有Mi件可用&#xff0c;每件耗费的空间是Ci &#xff0c;价值是Wi.求解将哪些物品装入背包可使这些物品的耗费的空间 总和不超过背包容量&#xff0c;且价值总和最大。 多重背包和01背包是非常像的&#x…

Vue项目“npm run serve”总卡住的问题 已解决

Vue项目“npm run serve”总卡住的问题 已解决 概述 如果卡住进度在51% 直接看这篇 https://blog.csdn.net/qq_34419312/article/details/141681307?spm1001.2014.3001.5501 在使用Vue.js进行项目开发时&#xff0c;npm run serve命令是我们常用的启动本地开发服务器的方式…

SpringBoot依赖之Spring Boot DevTools热部署开发增效工具

摘要&#xff1a;Spring项目又大又重&#xff0c;依赖多&#xff0c;编译启动慢&#xff0c;怎么提高研发效率呢&#xff1f;方法之一热部署&#xff01; 概念 Spring Boot DevTools 依赖名称: Spring Boot DevTools功能描述: Provides fast application restarts, LiveRelo…

提高 Web 应用程序安全性的标准

开放式 Web 应用程序安全项目 (OWASP) 是一个国际非营利组织&#xff0c;致力于为任何有兴趣提高 Web 应用程序安全性的人提供免费文档、工具、视频和论坛。 OWASP 最初成立为开放式 Web 应用程序安全项目&#xff0c;并于 2004 年注册为非营利性慈善机构&#xff0c;提供有关…

杰发科技AC7840——EEP的EEP_HAL_OTHER_ERROR错误

0. 初始化EEP时候发现返回5 在EEP使用手册里面有写答案 2. 根据文档看看EEP初始化的参数 2. 从代码看看EEP初始化流程 对EepSize进行校验&#xff0c;有异常直接退出 最小编程字节数&#xff0c;用的挺多的 重复次数赋值&#xff0c;看起来每个都要尝试3次 EEP的地址赋值 解锁…

嵌入式Linux应用程序开发-2 Linux基础命令

Linux常用命令 Shell是一种Linux中的命令行解释程序&#xff0c;就如同Command.com是DOS下的命令解释程序一样&#xff0c;为用户提供使用操作系统的接口。用户在提示符下输入的命令都由Shell先解释然后传给Linux内核。 Shell是命令语言、命令解释程序集程序设计语言的统称。…

macos USB外接键盘ctrl键绑定方法 解决外接USB键盘与mac键盘不一致问题

mac电脑外接USB键盘后我们需要修改一下 ctrl键的绑定后才符合我们的使用习惯,因为标准USB键盘和mac键盘上面的ctrl键是不一样的, mac上面的 command 键 对应我们USB键盘上面的 ctrl 键. 修改方法: 偏好设置 --> 键盘 点击修饰键 后 选择键盘里面选择 USB键盘 ,然后调换…

C++领进门(第三讲)

目录 7.内联函数 7.1 概念 7.2 特征 8. auto关键字(C11) 8.1 auto简介 8.2 auto的使用细则 8.3 auto不能推导的场景 9. 基于范围的for循环(语法糖)(C11) 9.1 范围for的语法 9.2 范围for的使用条件 10. 指针空值nullptr(C11) 7.内联函数 7.1 概念 以inline修饰的函数…

折腾 Quickwit,Rust 编写的分布式搜索引擎 - 从不同的来源摄取数据

摄取 API 在这节教程中&#xff0c;我们将介绍如何使用 Ingest API 向 Quickwit 发送数据。 要跟随这节教程&#xff0c;您需要有一个本地的 Quickwit 实例正在运行。 https://quickwit.io/docs/get-started/installation 要启动它&#xff0c;请在终端中运行 ./quickwit run。…

Python | Leetcode Python题解之第382题链表随机节点

题目&#xff1a; 题解&#xff1a; class Solution:def __init__(self, head: Optional[ListNode]):self.head headdef getRandom(self) -> int:node, i, ans self.head, 1, 0while node:if randrange(i) 0: # 1/i 的概率选中&#xff08;替换为答案&#xff09;ans …

Git分支原理、操作及实际开发中如何规范使用分支

&#x1f600;前言 在这篇博文中&#xff0c;我将与大家分享关于Git分支管理的内容。Git作为一个分布式版本控制系统&#xff0c;在协同开发和版本控制中扮演着至关重要的角色。通过这篇文章&#xff0c;您将深入了解Git分支的原理、操作以及在实际开发中如何规范使用分支。希望…