linux 内存分析(二)

休眠前和唤醒后, 通过echo m > /proc/sysrq-trigger  命令保存两次内存快照,然后对比,可以找出些异常点.

Subject: [PATCH] mm: dump all user tasks rss and score_adj debug message in
 sysrq interface

---
 drivers/tty/sysrq.c |    2 +-
 include/linux/mm.h  |    2 +-
 mm/oom_kill.c       |    6 ++++++
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
index 0064738..93e52a1 100755
--- a/drivers/tty/sysrq.c
+++ b/drivers/tty/sysrq.c
@@ -301,10 +301,10 @@ static struct sysrq_key_op sysrq_ftrace_dump_op = {
 #else
 #define sysrq_ftrace_dump_op (*(struct sysrq_key_op *)NULL)
 #endif
-
 static void sysrq_handle_showmem(int key)
 {
  show_mem(0);
+ dump_user_task();
 }
 static struct sysrq_key_op sysrq_showmem_op = {
  .handler = sysrq_handle_showmem,
diff --git a/include/linux/mm.h b/include/linux/mm.h
index fb504ad..b7b1450 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1620,7 +1620,7 @@ extern atomic_long_t mce_bad_pages;
 extern int soft_offline_page(struct page *page, int flags);
 
 extern void dump_page(struct page *page);
-
+extern void dump_user_task(void);
 #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_HUGETLBFS)
 extern void clear_huge_page(struct page *page,
        unsigned long addr,
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index 597ecac..99ddd08 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -780,3 +780,9 @@ void pagefault_out_of_memory(void)
  if (!test_thread_flag(TIF_MEMDIE))
   schedule_timeout_uninterruptible(1);
 }
+
+void dump_user_task(void)
+{
+ dump_tasks(NULL, NULL);
+}
+EXPORT_SYMBOL(dump_user_task);
--
1.7.5.4

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统中,应用内存分析内存分析是两个不同的任务。 应用内存分析主要是通过查看应用程序的内存使用情况,找出应用程序中存在的内存泄漏、内存溢出等问题,以优化应用程序的性能。可以使用工具如valgrind、gdb等。 内存分析则是对整个系统的内存使用情况进行分析,找出哪些进程或应用程序占用了过多的内存,从而优化系统的性能。可以使用工具如top、ps、free、vmstat、sar等。 下面简单介绍一些工具的使用方法: 1. valgrind:是一个开源的内存调试和性能分析工具,可以检测应用程序中的内存泄漏、越界访问、使用未初始化的内存等问题。使用方法:valgrind [options] your_program 2. gdb:是一个强大的调试器,可以用来调试C、C++等程序。使用方法:gdb your_program,然后输入命令run启动程序,再输入命令break设置断点,用命令print查看变量的值。 3. top:是Linux系统中常用的进程监控工具,可以实时查看系统的进程和资源使用情况。使用方法:在终端中输入top命令即可。 4. ps:也是Linux系统中常用的进程查看工具,可以查看进程的PID、进程名、进程状态等信息。使用方法:在终端中输入ps命令即可。 5. free:可以查看系统的内存使用情况。使用方法:在终端中输入free命令即可。 6. vmstat:可以查看系统的虚拟内存使用情况。使用方法:在终端中输入vmstat命令即可。 7. sar:可以查看系统的CPU、内存、磁盘等资源使用情况。使用方法:在终端中输入sar命令即可。 以上是一些常用的Linux应用内存分析内存分析工具,使用这些工具可以更好地了解系统和应用程序的内存使用情况,从而进行优化和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值