最近看了一个虚机的CPU使用情况,使用mpstat -P ALL命令查看系统的CPU情况(该系统只有一个CPU core),发现该CPU的%usr长期维持在70%左右,且%sys也长期维持在20%左右:
Linux下有3个特殊的进程,idle进程(PID = 0), init进程(PID = 1)和kthreadd(PID = 2)
1 # -*- coding:utf-8 -*- 2 ''' 3 Created on Sep 10, 2018 4 5 @author: SaShuangYiBing 6 ''' 7 import subprocess 8 import time 9 10 class CPU_usage(object): 11 """ 12 CPU统计方法是参照:https://blog.csdn.net/xiaodanpeng/article/details/53503076 13
OpenFalcon是一款企业级、高可用、可扩展的开源监控解决方案,提供实时报警、数据监控等功能。可以非常容易的监控整个服务器的状态,比如磁盘空间,端口存活,网络流量等等。
电源管理(Power Management)在 Linux Kernel 中,是一个比较庞大的子系统,涉及到供电(Power Supply)、充电(Charger)、时钟(Clock)、频率(Frequency)、电压(Voltage)、睡眠/唤醒(Suspend/Resume)等方方面面。
在IDE里面直接执行 cpu.py文件是正常的,正常输出 CPU 信息,但放到命令窗口执行却提示 config 模块不存在
本文以Linux3.14版本源码为例分析其启动流程。各版本启动代码略有不同,但核心流程与思想万变不离其宗。
在原来配置的基础上,make menuconfig选中如下选项重新配置Linux,使之携带调试信息
今天主要分享一个shell脚本,用来获取linux系统CPU、内存、磁盘IO等信息。
备注:一些命令的输出,第一次记录的数据是自重启到当前时间的平均值,所以,如果采用循环的方式不断重复开启命令,获取的数据可能不太准确,所以,这里采用开启命令后,一次性捕获需要的数据。
在没有监控软件的情况下,只要服务器能上互联网,就可通过发邮件的方式来提醒管理员系统负载与CPU占用的使用情况。 一、安装linux下面的一个邮件客户端msmtp软件(类似于一个foxmail的工具)
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
接上一篇BIOS启动,BIOS完成了基础的硬件检测和硬件的中断向量表的初始化,然后BIOS找到MBR并且把MBR加载在内存中,跳转到该位置。加载的位置在内存中的0x7C00,至于为什么是这个位置,主要是因为历史的原因吧,最初的内存只有32K,历史选择了0x7C00(31k)。
脚本 #!/bin/sh ############################## ## 名称: MonitorES.sh ## 描述: 主机利用率超过阈值 判断top占用内存的进程 匹配ES
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huangweiqing80/article/details/83088465
上篇文章给大家介绍了背景,讲解了 i2c 传输慢的原因,这篇文章手把手教大家分析。
StarRocks 提供两种监控报警的方案。企业版用户可以使用内置的 StarRocksManager,其自带的 Agent 从各个 Host 采集监控信息,上报至 Center Service,然后做可视化展示。StarRocksManager 提供邮件和 Webhook 的方式发送报警通知。如果您有二次开发需求,需要自行搭建部署监控服务,也可以使用开源 Prometheus+Grafana 方案,StarRocks 提供了兼容 Prometheus 的信息采集接口,可以通过直接连接 BE 或 FE 的 HTTP 端口来获取集群的监控信息。
之前介绍了运维监控系统Prometheus,然后就有朋友问我关于时序数据库的情况,所以这里总结一下时序数据库,并以InfluxDB为例,介绍时序数据库的功能特性和使用方式,希望能对大家有所帮助。
在[061]perfetto使用简介中,介绍了如何使用System Tracing的界面中来抓perfetto trace,这个方式的好处就是不需要连接电脑,可以离线抓取,但是perfetto有其他强大的功能,需要使用连接电脑才能发挥。
在内核层面,每个进程都是由task_struct 描述的,这个结构体非常大,可以粗略看下各主要内容:
内核最终目的:运行根文件系统的应用程序 内核做的事情: 处理uboot传入的参数 arch\arm\kernel /*启动内核:bi_arch_number机器ID。参数存放的地址 bd->bi_boot_params*/ theKernel (0, bd->bi_arch_number, bd->bi_boot_params); 判断是否支持单板(根据启动内核时传入的机器ID) /**/ ENTRY(stext) msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MOD
******************************内存监控********************************* *******************时间: 2019-08-24 16:50:20 ****************** 总内存: 65958920 空闲内存: 37296548 给文件的缓冲大小: 310288 高速缓冲存储器使用的大小: 8991808 被高速缓冲存储用的交换空间大小: 7160 给文件的缓冲大小: 310288 交换内存利用率: 4.35586183351 内存利用率: 29.35 % ****************************内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息监控**************************** *******************时间: 2019-08-24 16:50:22 ****************** 等待运行进程的数量: 1 处于不间断状态的进程: 0 使用虚拟内存(swap)的总量: 365396 空闲的内存总量: 37298132 用作缓冲的内存总量: 310288 用作缓存的内存总量: 8991816 交换出内存总量 : 0 交换入内存总量 : 0 从一个块设备接收: 0 发送到块设备: 0 每秒的中断数: 9751 每秒的上下文切换数: 7514 用户空间上进程运行的时间百分比: 3 内核空间上进程运行的时间百分比: 2 闲置时间百分比: 95 等待IO的时间百分比: 0 从虚拟机偷取的时间百分比: 0 ***************************************cpu监控*************************************** *******************时间: 2019-08-24 16:50:23 ****************** CPU数目: 24 ************************负载均衡监控**************************** *******************时间: 2019-08-24 16:50:24 ****************** 系统5分钟前的平均负载: 0.16 系统10分钟前的平均负载: 0.08 系统15分钟前的平均负载: 0.06 分子是正在运行的进程数,分母为总进程数: 3/968 最近运行的进程id: 25222 ************************磁盘空间监控**************************** *******************时间: 2019-08-24 16:50:24 ****************** 文件系统: /dev/sda3 容量: 1.8T 已用: 133G 可用: 1.7T 已用%挂载点: 8% 文件系统: tmpfs 容量: 32G 已用: 12K 可用: 32G 已用%挂载点: 1% 文件系统: /dev/sda1 容量: 477M 已用: 57M 可用: 395M 已用%挂载点: 13% 文件系统: /dev/sdb1 容量: 440G 已用: 71M 可用: 436G 已用%挂载点: 1% ******************************端口监控********************************* *******************时间: 2019-08-24 16:50:25 ****************** 1 1 #################################################
为了在CPU空闲时节约能源,可以命令CPU进入低功耗模式。C-state是intel CPU处于空闲时的一种状态,CPU有几种电源模式,它们统称为“c状态”或“c模式”
本 文阐述 Linux 中的文件系统部分,源代码来自基于 IA32 的 2.4.20 内核。总体上说 Linux下的文件系统主要可分为三大块:一是上层的文件系统的系统调用,二是虚拟文件系统 VFS(Virtual FilesystemSwitch),三是挂载到 VFS 中的各实际文件系统,例如 ext2,jffs 等。本文侧重于通过具体的代码分析来解释 Linux内核中 VFS 的内在机制,在这过程中会涉及到上层文件系统调用和下层实际文件系统的如何挂载。文章试图从一个比较高的角度来解释Linux 下的 VFS文件系统机制,所以在叙述中更侧重于整个模块的主脉络,而不拘泥于细节,同时配有若干张插图,以帮助读者理解。
通过 ps 命令可以看到红色方框标出的都是父进程为2号进程的内核线程,2号进程即蓝色方框标出的进程 kthreadd,1号进程是绿色方框标出的进程 init,它们的父进程号都是0。
uboot 打印完 Starting kernel . . .,就完成了自己的使命,控制权便交给了 kernel 的第一条指令,也就是下面这个函数 init/main.c
写一个配置文件保存被监控主机SSH连接信息,文件内容格式:主机名 IP User Port
最新 Linux 内核是 5.15 版本。现在常用 Linux 内核源码为4.14、4.19、4.9 等版本,其中 4.14 版本源码压缩包大概 90+M,解压后 700+M,合计 61350 个文件。如此众多的文件,用 source insight 或者 VSCode 查看都会比较卡,所以可以采用在线查看的方式。
几乎每个Linux驱动都有个module_init(与module_exit的定义在Init.h (/include/linux) 中)。没错,驱动的加载就靠它。为什么需要这样一个宏?原因是按照一般的编程想法,各部分的初始化函数会在一个固定的函数里调用比如:
在计算机系统中,CPU的功能是执行程序,总结起来就是我们在教科书上学到的:取指、译码、执行。那么问题来了,如果没有程序要执行,CPU要怎么办?也许您会说,停掉就是了啊。确实,是要停掉,但何时停、怎么停,却要仔细斟酌,因为实际的软硬件环境是非常复杂的。
① 内核空间 ( Kernel Space ) : 寻址范围 0x FFFF 0000 0000 0000 ~ 0x FFFF FFFF FFFF FFFF ;
前言: 前文《[qemu][acpi]从虚拟化看ACPI》中,介绍了ACPI的大概逻辑,以及ACPI sleep的S1,S2,S3(STR),S4(STD),S5状态。 关于节电,intel提供了c-state和p-state的CPU级别的控制,linux也对其进行了支持。 分析: 1,c-state 关于c-state的详细解释,参考intel的文档https://software.intel.com/en-us/articles/power-management-states-p-states-c-states-and-package-c-states
在 Linux 系统中的 /proc/stat 文件中存储了CPU 活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。不同内核版本中该文件的格式可能不大一致,以下通过实例来说明数据该文件中各字段的含义。
用了这么久的docker,对docker的实现原理挺感兴趣的,在对Linux下docker的实现原理了解之后,我没有用过Windows下的docker,更加好奇Windows下的docker是如何实现的(它并不开源),问了问owefsad师傅,说是可能用到了hyperV,那么可能类似Vmware吗?不知道啊。
要理解第一个问题,得先从ACPI(高级配置与电源接口)说起,ACPI是一种规范(包含软件与硬件),用来供操作系统应用程序管理所有电源接口。
如果我直接在屏幕上输出 mpstat,显示所有处理器的平均统计信息,包括 CPU数量,cpu的 利用率、闲置率等。
在 Linux 下我们通过 top 或者 htop 命令可以看到当前的 CPU 资源利用率,另外在一些监控工具中你可能也遇见过,那么它是如何计算的呢?在 Nodejs 中我们该如何实现?
CPU time is allocated in discrete time slices (ticks). For a certain number of time slices, the cpu is busy, other times it is not (which is represented by the idle process). In the picture below the CPU is busy for 6 of the 10 CPU slices. 6/10 = .60 = 60% of busy time (and there would therefore be 40% idle time).
多核CPU现在很常见,那么问题来了,一个程序在运行时,只在一个CPU核上运行?还是交替在多个CPU核上运行呢?Linux内核是如何在多核间调度进程的呢?又是内核又是CPU核,两个核有点绕,下面称CPU处理器来代替CPU核。
在《一文读懂 | 进程怎么绑定 CPU》这篇文章中介绍过,在 Linux 内核中会为每个 CPU 创建一个可运行进程队列,由于每个 CPU 都拥有一个可运行进程队列,那么就有可能会出现每个可运行进程队列之间的进程数不一样的问题,这就是所谓的 负载不均衡 问题,如下图所示:
linux 系统中,当 cpu 上没有要执行的任务时,往往会运行 swapper 进程,即 idle 状态,这时我们可以说 cpu 处于空闲状态。
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写, 是实时系统监控工具。该命令通过使用knlist子程序和/dev/kmen伪设备驱动器访问这些数据,输出信息直接打印在屏幕。vmstat反馈的与CPU相关的信息包括:
一般来说对于需要大量cpu计算的进程,当前端压力越大时,CPU利用率越高。但对于I/O网络密集型的进程,即使请求很多,服务器的CPU也不一定很到,这时的服务瓶颈一般是在磁盘的I/O上。比较常见的就是,大文件频繁读写的cpu开销远小于小文件频繁读写的开销。因为在I/O吞吐量一定时,小文件的读写更加频繁,需要更多的cpu来处理I/O的中断。 在Linux/Unix下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间。平时所说的CPU利用率是
Linux系统上的/proc目录是一种文件系统,即proc文件系统,与其它常见的文件系统不同的是,/proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为内核与进程提供通信的接口。用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取/proc目录中的文件时,proc文件系统是动态从系统内核读出所需信息并提交的。
开发人员在高性能系统的性能调优过程中,经常会碰到各种背景的噪声干扰, 从而使得收集的数据不够精确。本文主要从CPU 以及Linux操作系统的角度来分析各种噪声的来源以及消除方法。最终的目标是搭建基准平台,在特定的cpu上实现”0”干扰。
前面谈过如何隐藏一个进程,我说过,隐藏procfs接口那无异于掩耳盗铃,正确的做法应该是将task_struct从任何链表中摘除,仅仅保留于run queue。
当中断被关闭(俗称关中断)了,CPU就不能响应其他的事件,如果这时有一个鼠标中断,要在下一次开中断时才能响应这个鼠标中断,这段延迟称为中断延迟。向current_tracer 文件写入 irqsoff字符串即可打开irqsoff来跟踪中断延迟。
领取专属 10元无门槛券
手把手带您无忧上云