文章目录 一、cpuinfo 处理器信息 二、self 当前进程信息文件 三、meminfo 当前内存信息文件 一、cpuinfo 处理器信息 ---- cpuinfo 文件中 , 会标明 CPU 型号 root 0 1970-01-01 08:00 thread-self -> 24374/task/24374 walleye:/proc # 三、meminfo 当前内存信息文件 ---- meminfo 是当前内存信息文件 , 存储当前 Android 系统的内存使用情况 ; 这是总体的进程使用情况 ; 130|walleye:/proc # cat meminfo
meminfo_counters: MEMINFO_MEM_AVAILABLE meminfo_counters: MEMINFO_BUFFERS meminfo_counters : MEMINFO_CACHED meminfo_counters: MEMINFO_SWAP_CACHED meminfo_counters: MEMINFO_ACTIVE : MEMINFO_MLOCKED meminfo_counters: MEMINFO_SWAP_TOTAL meminfo_counters: MEMINFO_SWAP_FREE meminfo_counters: MEMINFO_ANON_PAGES meminfo_counters: MEMINFO_MAPPED meminfo_counters : MEMINFO_SHMEM meminfo_counters: MEMINFO_SLAB meminfo_counters: MEMINFO_SLAB_RECLAIMABLE
下文以劫持/proc/meminfo为例进行说明: ###编写hijack_meminfo.c,用于劫持/proc/meminfo的open操作,从而劫持free命令的输出。 ; // 劫持/proc/meminfo的open char *s_meminfo = strstr(pathname, "/proc/meminfo"); if = NULL) { /* TODO:调用自己开发的容器meminfo信息收集函数,生成meminfo到容器目录/tmp/proc/meminfo */ } } ###编译hijack_meminfo.c,生成动态链接库libhijack_meminfo.so。 $ gcc -shared -fPIC hijack_meminfo.c -o libhijack_meminfo.so -ldl ###将libhijack_meminfo.so的全路径配置到环境变量
+ mInfos[Debug.MEMINFO_CACHED] - mInfos[Debug.MEMINFO_MAPPED]; } mInfos[Debug.MEMINFO_BUFFERS]: 所有的 ] + mInfos[Debug.MEMINFO_SLAB]+ mInfos[Debug.MEMINFO_VM_ALLOC_USED] + mInfos[Debug.MEMINFO_PAGE_TABLES [Debug.MEMINFO_BUFFERS] + mInfos[Debug.MEMINFO_CACHED] - mInfos[Debug.MEMINFO_MAPPED] [Debug.MEMINFO_SLAB]+ mInfos[Debug.MEMINFO_VM_ALLOC_USED] + mInfos[Debug.MEMINFO_PAGE_TABLES]+ mInfos [Debug.MEMINFO_KERNEL_STACK]; } 这里meminfo数据来源都来自/proc/meminfo,下面是一份meminfo的例子 MemTotal: 2916948
; while (VirtualQueryEx(process, (void*)basePtr, &memInfo, sizeof(MEMORY_BASIC_INFORMATION))) { const DWORD mem_commit = 0x1000; const DWORD page_readwrite = 0x04; if (memInfo.State == } basePtr = (char*)memInfo.BaseAddress + memInfo.RegionSize; } } 然后,是在进程内存中,搜索字节模式 (Byte Pattern == mem_commit && memInfo.Protect == page_readwrite){ char* remoteMemRegionPtr = (char*)memInfo.BaseAddress if (ReadProcessMemory(process, memInfo.BaseAddress, localCopyContents, memInfo.RegionSize, &bytesRead
; while (VirtualQueryEx(process, (void*)basePtr, &memInfo, sizeof(MEMORY_BASIC_INFORMATION))) { const DWORD mem_commit = 0x1000; const DWORD page_readwrite = 0x04; if (memInfo.State == } basePtr = (char*)memInfo.BaseAddress + memInfo.RegionSize; } } 然后,是在进程内存中,搜索字节模式 (Byte Pattern == mem_commit && memInfo.Protect == page_readwrite){ char* remoteMemRegionPtr = (char*)memInfo.BaseAddress if (ReadProcessMemory(process, memInfo.BaseAddress, localCopyContents, memInfo.RegionSize, &bytesRead
Linux:/proc/meminfo参数详细解释 一、Linux内存总览图 二、meminfo参数的详细介绍 /proc/meminfo是了解Linux系统内存使用状况的主要接口,我们最常用的”free 负责输出/proc/meminfo的源代码是: fs/proc/meminfo.c : meminfo_proc_show() MemTotal: 3809036 kB MemFree: 统计值是/proc/meminfo的KernelStack。 参见: fs/proc/meminfo.c: static int meminfo_proc_show(struct seq_file *m, void *v) { ... 参见: fs/proc/meminfo.c: static int meminfo_proc_show(struct seq_file *m, void *v) { ...
1、seek()方法 该方法用于移动文件读取指针到指定位置 f_meminfo = open("/proc/meminfo", "r") f_meminfo.seek(0) 打开/proc/ meminfo文件,将文件读取指针移动到最开始的位置。 2、match()方法 从名字不难看出,他是用来进行匹配的函数,先看看/proc/meminfo中的内容: [root@ ~]# cat /proc/meminfo MemTotal: for line in f_meminfo: m = re.match("(\w+):\s+(\d+)\s+(\w+)", line) 在某一行匹配如下格式的内容: 非特殊字符+:+空格+数字+空格 3、group()方法 for line in f_meminfo: m = re.match("(\w+):\s+(\d+)\s+(\w+)", line) if m: if m.group
通过获取Linux中的 /proc/stat 文件中的内容可以获取系统内存的详细信息: # cat /proc/meminfo MemTotal: 3880404 kB MemFree 经过一番信息检索,得出一个结论, free 命令中的数值是按照 /proc/meminfo 中的数据,根据一定算法计算所得,并且新版旧版的 free 所输出内容也不一致。 因此按照 proc/meminfo 中的数据计算内存使用率是更加精确的。 因为Linux kernel并没有滴水不漏地统计所有的内存分配,kernel动态分配的内存中就有一部分没有计入/proc/meminfo中。 之谜 free命令的正确读取方式 通过/proc/meminfo实时获取系统内存使用情况 编程获取Linux的内存占用和CPU使用率 Linux下系统内存使用率的计算方法 C语言监控linux系统 cpu
/proc/meminfo 关键指标说明 [root@VM_0_113_centos test]# cat /proc/meminfo MemTotal: 16265592 kB MemFree cext.linux_sysinfo() cached = active = inactive = sreclaimable = shmem = 0 with open('/proc/meminfo shmem在内存不足时是不会自动回收的,所以shmem不能统计到剩余可用内存里面,需要减掉 ) 2024年07月更新 2024年07月左右 barad agent开始变更内存使用率算法,如果/proc/meminfo 因为不同linux发行版的free命令输出表示的意思可能有区别,最常见的是centos6.x跟centos7.x的区别,centos6.x free命令输出的buffer/cache不包括/proc/meminfo 的SReclaimable,而centos7.x free命令输出的buffer/cache是包括/proc/meminfo的SReclaimable。
1、cat /proc/meminfo 查看RAM使用情况最简单的方法是通过/proc/meminfo。 /proc/meminfo列出了所有你想了解的内存的使用情况。进程的内存使用信息也可以通过/proc/<pid>/statm 和 /proc/<pid>/status 来查看。 使用方法: cat /proc/meminfo 2、free -h free命令是一个快速查看内存使用情况的方法,它是对 /proc/meminfo 收集到的信息的一个概述。
import make_server import json import commands import BrandInfo as brand import CpuInfo as cpu import MemInfo cpu_type = cpuinfo[0] cpu_num = cpuinfo[1] status, output = commands.getstatusoutput("cat /proc/meminfo brandinfo[2] cpuinfo = cpu.CpuInfo().get_all() cpu_type = cpuinfo[0] cpu_num = cpuinfo[1] meminfo = memory.MemInfo().get_all() mem_ddr = meminfo[0] mem_speed = meminfo[1] mem_size = meminfo [2] mem_num = meminfo[3] mem_slot_num = meminfo[4] diskinfo = disk.StorageInfo().get_all
nvidia-ml-py 具体实例 import pynvml pynvml.nvmlInit() # 这里的1是GPU id handle = pynvml.nvmlDeviceGetHandleByIndex(1) meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle) print(meminfo.total) #第二块显卡总的显存大小 print(meminfo.used)#这里是字节 bytes,所以要想得到以兆M为单位就需要除以1024**2 print(meminfo.free) #第二块显卡剩余显存大小 输出是: 11721506816 5333057536 6388449280
python获得linux物理内存大小: import re def get_physical_memory_in_kb(): meminfo = open('/proc/meminfo').read () matched = re.search(r'^MemTotal:\s+(\d+)', meminfo) return int(matched.groups()[0])
例子: In [11]: MemInfo = {'id1':'abc','id2':'bcd','id3':'cde','id4':'def'} ...: print MemInfo ...: {'id4 In [12]: print "id1's name is:",MemInfo['id1'] id1's name is: abc 或者 In [13]: print "id3's name is %s "%MemInfo['id3'] id3's name is cde 添加键值 In [14]: MemInfo['id5'] = 'LiuShunxiang' ...: print MemInfo . 删除键值 In [15]: del MemInfo['id2'] ...: print MemInfo ...: {'id4': 'def', 'id5': 'LiuShunxiang', 'id3': In [16]: MemInfo.items() Out[16]: [('id4', 'def'), ('id5', 'LiuShunxiang'), ('id3', 'cde'), ('id1', '
allmeminfo.stdout.read().split("\n") for i in allmeminfo: if i.startswith(sys.argv[1]): meminfo = i.split() print("Process Name: "+meminfo[0]) print("Total Process: "+meminfo[1]) print("Physics Memroy Use: "+meminfo[5]+" KB") 执行结果如下: ?
python获得linux物理内存大小: import re def get_physical_memory_in_kb(): meminfo = open('/proc/meminfo'). read() matched = re.search(r'^MemTotal:\s+(\d+)', meminfo) return int(matched.groups()[0])
实例 import pynvml pynvml.nvmlInit() # 这里的1是GPU id handle = pynvml.nvmlDeviceGetHandleByIndex(1) meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle) print(meminfo.total) #第二块显卡总的显存大小 print(meminfo.used)#这里是字节 bytes,所以要想得到以兆M为单位就需要除以1024**2 print(meminfo.free) #第二块显卡剩余显存大小 以上就是python包和文件夹的区别,希望对大家有所帮助。
by:授客 QQ:1033553122 1、 查看内存信息 1)查看所有内存信息 命令: dumpsys meminfo 例: C:\Users\laiyu>adb shell shell@android :/ $ dumpsys meminfo dumpsys meminfo Applications Memory Usage (kB): Uptime: 80066272 Realtime: 226459939 kB 0 kB unshared; 0 kB volatile 2)查看某个包的内存信息 命令: dumpsys pkg_name 例: shell@android:/ $ dumpsys meminfo com.tencent.mobileqq > /mnt/sdcard/meminfo.txt bileqq > /mnt/sdcard/meminfo.txt < shell@android
/proc/meminfo 一种最简单的方法是通过“/proc/meminfo”来检查内存使用状况。这个动态更新的虚拟文件事实上是诸如free,top和ps这些与内存相关的工具的信息来源。 从可用/闲置物理内存数量到等待被写入缓存的数量或者已写回磁盘的数量,只要是你想要的关于内存使用的信息,“/proc/meminfo”应有尽有。 1.$ cat /proc/meminfo 2. atop atop命令是用于终端环境的基于ncurses的交互式的系统和进程监测工具。 1.$ sudo atop 3. free free命令是一个用来获得内存使用概况的快速简单的方法,这些信息从“/proc/meminfo”获取。