crash —— 查看进程的mm_struct内容

简介: crash —— 查看进程的mm_struct内容

方法1

  • 使用ps获取进程的task_struct地址,然后得到mm_struct地址
crash> ps | grep bash
6666  96253   8  ffff88a07fd42000  IN   0.0   24268   3048  bash
8288  59636  14  ffff88fdc4678000  IN   0.0   27500   1972  bash
8581   8580  25  ffff88dda33a0000  IN   0.0   15788   2556  bash
8597   8596  80  ffff88a08261a000  IN   0.0   15788   2552  bash
8719   8718  77  ffff888e01d0e000  IN   0.0   17324   3096  bash
8720   8717  77  ffff88abe8e8c000  IN   0.0   17324   3088  bash
28340  28274  66  ffff8901a758a000  IN   0.0   26072   3880  bash
59636  59629  40  ffff88c8d3548000  IN   0.0   27500   3364  bash
crash> task -R mm ffff88a07fd42000
PID: 6666   TASK: ffff88a07fd42000  CPU: 8   COMMAND: "bash"
  mm = 0xffff888b9dbad000,
crash> *mm_struct -x 0xffff888b9dbad000
struct mm_struct {
  {
    mmap = 0xffff893a29b79878,
    mm_rb = {
      rb_node = 0xffff88b7aa6cf240
    },
    vmacache_seqnum = 0x14,
    get_unmapped_area = 0xffffffff8102ac20 <arch_get_unmapped_area_topdown>,
    mmap_base = 0x7f1960ff9000,
    mmap_legacy_base = 0x2b8d491b2000,
    mmap_compat_base = 0xf7fd7000,
    mmap_compat_legacy_base = 0x5557c000,
    task_size = 0x7ffffffff000,
    highest_vm_end = 0x7ffd09bf3000,
    pgd = 0xffff88b733fb6000,
    mm_users = {
      counter = 0x1
    },
    mm_count = {
      counter = 0x1
    },
    pgtables_bytes = {
      counter = 0x17000
    },
    map_count = 0x3a,
...
  • 使用task命令获取获取指定进程的mm_struct的值
crash> task -R mm 2085
PID: 2085   TASK: ffff88dcca1fa000  CPU: 61  COMMAND: "supervisor"
  mm = 0xffff88dea7232000,
crash> *mm_struct -x 0xffff88dea7232000
struct mm_struct {
  {
    mmap = 0xffff88dcc9122658,
    mm_rb = {
      rb_node = 0xffff88dcc9123240
    },
    vmacache_seqnum = 0x1,
    get_unmapped_area = 0xffffffff8102ac20 <arch_get_unmapped_area_topdown>,
    mmap_base = 0x7fa1cff0b000,
    mmap_legacy_base = 0x2b04da2a0000,
    mmap_compat_base = 0xf7f72000,
    mmap_compat_legacy_base = 0x555e1000,
    task_size = 0x7ffffffff000,
    highest_vm_end = 0x7ffe1cb05000,
    pgd = 0xffff88ddab4aa000,
...

方法2

直接使用vm命令,这个更加方便。

crash> vm -m 2085
PID: 2085   TASK: ffff88dcca1fa000  CPU: 61  COMMAND: "supervisor"
struct mm_struct {
  {
    mmap = 0xffff88dcc9122658,
    mm_rb = {
      rb_node = 0xffff88dcc9123240
    },
    vmacache_seqnum = 1,
    get_unmapped_area = 0xffffffff8102ac20 <arch_get_unmapped_area_topdown>,
    mmap_base = 140332955119616,
    mmap_legacy_base = 47299840049152,
    mmap_compat_base = 4160167936,
    mmap_compat_legacy_base = 1432227840,
    task_size = 140737488351232,
    highest_vm_end = 140729379737600,
    pgd = 0xffff88ddab4aa000,
    mm_users = {
      counter = 1
    },
    mm_count = {
      counter = 1
    },
    pgtables_bytes = {
      counter = 77824
    },
    map_count = 43,
相关文章
|
10月前
|
运维 监控 JavaScript
鸿蒙next版开发:分析JS Crash(进程崩溃)
在HarmonyOS 5.0中,JS Crash指未处理的JavaScript异常导致应用意外退出。本文详细介绍如何分析JS Crash,包括异常捕获、日志分析和典型案例,帮助开发者定位问题、修复错误,提升应用稳定性。通过DevEco Studio收集日志,结合HiChecker工具,有效解决JS Crash问题。
372 4
crash —— 输出属于同一个进程的所有线程
crash —— 输出属于同一个进程的所有线程
crash —— 查看进程的内核栈的内容
crash —— 查看进程的内核栈的内容
crash —— 查看进程的vma结构体
crash —— 查看进程的vma结构体
进程crash报错1000
进程crash,在应用程序日志里看到有1000 的报错
进程crash报错1000
|
6月前
|
Linux 数据库 Perl
【YashanDB 知识库】如何避免 yasdb 进程被 Linux OOM Killer 杀掉
本文来自YashanDB官网,探讨Linux系统中OOM Killer对数据库服务器的影响及解决方法。当内存接近耗尽时,OOM Killer会杀死占用最多内存的进程,这可能导致数据库主进程被误杀。为避免此问题,可采取两种方法:一是在OS层面关闭OOM Killer,通过修改`/etc/sysctl.conf`文件并重启生效;二是豁免数据库进程,由数据库实例用户借助`sudo`权限调整`oom_score_adj`值。这些措施有助于保护数据库进程免受系统内存管理机制的影响。
|
6月前
|
Linux Shell
Linux 进程前台后台切换与作业控制
进程前台/后台切换及作业控制简介: 在 Shell 中,启动的程序默认为前台进程,会占用终端直到执行完毕。例如,执行 `./shella.sh` 时,终端会被占用。为避免不便,可将命令放到后台运行,如 `./shella.sh &`,此时终端命令行立即返回,可继续输入其他命令。 常用作业控制命令: - `fg %1`:将后台作业切换到前台。 - `Ctrl + Z`:暂停前台作业并放到后台。 - `bg %1`:让暂停的后台作业继续执行。 - `kill %1`:终止后台作业。 优先级调整:
304 5
|
运维 关系型数据库 MySQL
掌握taskset:优化你的Linux进程,提升系统性能
在多核处理器成为现代计算标准的今天,运维人员和性能调优人员面临着如何有效利用这些处理能力的挑战。优化进程运行的位置不仅可以提高性能,还能更好地管理和分配系统资源。 其中,taskset命令是一个强大的工具,它允许管理员将进程绑定到特定的CPU核心,减少上下文切换的开销,从而提升整体效率。
掌握taskset:优化你的Linux进程,提升系统性能
|
弹性计算 Linux 区块链
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
401 4
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
|
算法 Linux 调度
探索进程调度:Linux内核中的完全公平调度器
【8月更文挑战第2天】在操作系统的心脏——内核中,进程调度算法扮演着至关重要的角色。本文将深入探讨Linux内核中的完全公平调度器(Completely Fair Scheduler, CFS),一个旨在提供公平时间分配给所有进程的调度器。我们将通过代码示例,理解CFS如何管理运行队列、选择下一个运行进程以及如何对实时负载进行响应。文章将揭示CFS的设计哲学,并展示其如何在现代多任务计算环境中实现高效的资源分配。