一.前言 终于可以进入Linux kernel内存管理的世界了,但是从哪里入手是一个问题,当面对一个复杂系统的时候,有时候不知道怎么开始.遵守“一切以人为本”的原则,我最终选择先从从userspace的视角来看内核的内存管理.最开始的系列文章选择了vm运行参数这个主题.执行ls /proc/sys/vm的命令,你可以看到所有的vm运行参数,本文选择了overcommit相关参数来介绍. 本文的代码来自4.0内核. 二.背景知识 要了解这类参数首先要理解什么是committed virtual m…
一.前言 本文是描述Linux virtual memory运行参数的第二篇,主要是讲OOM相关的参数的.为了理解OOM参数,第二章简单的描述什么是OOM.如果这个名词对你毫无压力,你可以直接进入第三章,这一章是描述具体的参数的,除了描述具体的参数,我们引用了一些具体的内核代码,本文的代码来自4.0内核,如果有兴趣,可以结合代码阅读,为了缩减篇幅,文章中的代码都是删减版本的.按照惯例,最后一章是参考文献,本文的参考文献都是来自linux内核的Documentation目录,该目录下有大量的文档可…
内容主要来源于:linux的内存回收和交换 各项命令查看的linux环境是:Linux SUSE-33 2.6.32.12-0.7-defaul zone? 内存管理的相关逻辑都是以zone为单位的,这里zone的含义是指内存的分区管理.Linux将内存分成多个区,主要有直接访问区(DMA).一般区(Normal)和高端内存区(HighMemory).内核对内存不同区域的访问因为硬件结构因素会有寻址和效率上的差别.如果在NUMA架构上,不同CPU所管理的内存也是不同的zone. /proc/zo…
认识loadrunner及相关性能参数 LoadRunner,是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试.通过使用 LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期. LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能. 对象 LoadRunner的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和…
request_irq函数定义 /*include <linux/interrupt.h>*/ int request_irq(unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id) 使用: 将中断号irq与中断处理函数handler对应 返回值:成功返回0,失败返回非0. 参数: irq:指定要分配的中断号,中断号的定义在“include/mach/…
Linux 下监控用户最大进程数参数(nproc)是否到达上限的步骤: 1.查看各系统用户的进程(LWP)数: 注意:默认情况下采用 ps 命令并不能显示出所有的进程.因为 Linux 环境下执行多线程,每个线程都将以一个轻量级进程(light-weight process [LWP])的形式执行,而 ps 命令如果不带 -L 选项将无法查看 LWP. 查看各系统用户的进程数的命令如下所示,执行后可得类似如下结果. # ps h -Led -o user | sort | uniq -c | s…
Tomcat参数配置相关 by:授客 QQ:1033553122 目的: 对Tomcat配置的点滴学习总结,主要目的在于分析Tomcat与性能相关的一些参数设置,以便性能调优时选择最优配置   环境: Server version: Apache Tomcat/9.0.0.M1 Java8   配置文件说明 1. server.xml <?xml version='1.0' encoding='utf-8'?> <!--connectors可使用一个共享的executor(执行器),可定…
Nginx参数配置相关 by:授客 QQ:1033553122 目的: 对Nginx配置的点滴学习总结,主要目的在于分析Nginx与性能相关的一些参数设置,以便性能调优时选择最优配置   环境: $ cd /usr/local/nginx/sbin/ $ ./nginx -v nginx version: nginx/1.8.0   配置文件说明: # cat /usr/local/nginx/conf/nginx.conf # 使用的用户和组 #user  nobody; 说明: 语法:use…
5.1 多job串联 一个稍复杂点的处理逻辑往往需要多个mapreduce程序串联处理,多job的串联可以借助mapreduce框架的JobControl实现 示例代码: ControlledJob cJob1 = new ControlledJob(job1.getConfiguration()); ControlledJob cJob2 = new ControlledJob(job2.getConfiguration()); ControlledJob cJob3 = new Contro…
原文链接:命令行运行Python脚本时传入参数的三种方式(原文的几处错误在此已纠正) 如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式. python script.py ,, python script.py -gpus=,, --batch-size= python script.py -gpus=,, --batch_size= 这三种格式对应不同的参数解析方式,分别为sys.argv, argparse, tf.app.run, 前两…