深度解析Linux PR调度算法,提升系统性能 (linux pr)

随着计算机技术的不断发展,操作系统的性能优化也成为计算机领域的一个热门话题。在操作系统中,调度算法是决定进程或线程何时被执行的重要因素之一。对于Linux操作系统来说,PR调度算法是其中应用最广泛的调度算法,也是Linux内核开发者和操作系统优化工程师们不可或缺的工具。

本文将深度解析Linux PR调度算法,介绍其原理、实现方式、优缺点等众多方面,旨在帮助读者更好地理解PR调度算法,并且通过合理地调优提升系统性能。

一、PR调度算法概述

PR调度算法是基于Linux 2.6.23以上版本内核中的进程优先级(Priority)实现的一种调度算法。该算法将所有的进程分为两类: 实时进程和普通进程。实时进程一旦运行,就必须执行完毕,而普通进程则会根据优先级来分配时间片。

在PR调度算法中,每个进程都被分配了一个优先级值,该值范围为0~139,其中数值小的进程优先级越高,数值大的进程优先级越低。基于这些优先级值,内核调度器会选择一个更高优先级的进程来运行,直到它被阻塞或者时间片用尽,随后再选择一个更高优先级的进程运行。

但是,在分配优先级时,PR调度算法并不是简单地将当前进程的状态和运行时间作为其优先级的依据,而是基于多个因素进行计算。下面是PR调度算法中进程优先级的计算公式:

Priority = f(rtime, nice)

rtime表示进程的运行时间,而nice表示进程的“好感度”,也即操作系统内核对该进程的评价(即“良心度”),nice值越小(负数),则表示进程的优先级越高,nice值越大(正数),则表示进程的优先级越低。

二、PR调度算法的实现方式

PR调度算法的实现方式可分为两种:一种是按照活动执行时间进行排序的进程队列,另一种是基于红黑树的进程队列。

1. 按照活动执行时间进行排序的进程队列

该方式将进程按照其运行时间的长短进行排序,执行时间短的进程位于队首,执行时间长的进程位于队尾。 内核在选择进程时,只需从该队列的头部开始扫描,选择更高优先级的进程即可。但是,由于该方式在每个进程执行完毕后需要重新排列队列,因此会带来一定的性能损失。

2. 基于红黑树的进程队列

在这种方式下,内核将所有进程按照优先级进行分类,并将每个队列存储在一个基于红黑树的数据结构中。在选择进程时,内核只需查找当前优先级更高的红黑树,选择该树中的进程即可。这种方式具有高效性,并且在新增或删除进程时不会对整个队列进行重排,因此具有很好的性能。

三、PR调度算法的优缺点

PR调度算法相对于其他调度算法来说,在普通进程运行速度较快的情况下,具有比较高的系统响应能力,且具有高度的稳定性。 但是,由于PR调度算法偏向于同时运行较少的进程,因此无法充分利用CPU资源,在处理大量实时性不高的任务的时候,可能会出现一些性能瓶颈。

四、如何通过PR调度算法提升系统性能

对于一台Linux系统来说,通过PR调度算法进行优化具有很高的实际价值,可以有效地提高系统的性能。 下面是一些优化PR调度算法的方法:

1. 改变默认情况下nice值的分配方式

可以通过修改/etc/security/limits.conf文件中的值,改变系统默认nice值的分配方式。在这个文件中,我们可以配置用户、用户组、进程等的优先级,通过调整其中的nice值来提升或下降一个进程的优先级。

2. 控制系统进程的优先级

对于部分系统进程来说,比如服务端口、磁盘操作等,可以通过修改其nice值或者优先级值来提升或下降优先级。

3. 分离内核线程和应用程序线程

内核线程和应用程序线程是两个不同的概念。在PR调度算法下,内核线程的优先级大于应用程序线程,因此将内核线程和应用程序线程分离开来,可以使得系统的性能提升。

结论

PR调度算法是在Linux内核中广泛应用的调度算法,也是Linux内核开发者以及系统优化工程师们的首选工具之一。通过本文我们可以学习PR调度算法的原理、实现方式、优缺点等多方面内容,并且掌握一些优化方法,从而可以更好地利用PR调度算法优化Linux系统,提高系统的性能。

相关问题拓展阅读:

如何查看Linux下系统占用的资源?

用 ‘top -i’ 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情仔宏运况…

top:

主要参数

d:指定更新的间隔,以秒计算。

q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以更高的优先序执行。

c:显示进程完整的路径与名称。

S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。

s:安全模式。

i:不显示任何闲置(Idle)或无用(Zombie)的行程。

n:显示更新的次数,完成后将会退出to

显示参数:

PID(Process ID):进程标示号。

USER:进程所有者的用户名。

PR:进程的优先级别。

NI:进程的优先级别数值。

VIRT:进程占用的虚拟内存值。

RES:进程占用的物理内存值。

SHR:进程使用的共享内存值。

S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。

%CPU:该进程占用的CPU使用率。

%MEM:该进程占用的物理内存和总内存的百分比。

TIME+:该进程启动后占用的总的CPU时间。

Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。

top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。

:立刻刷新。

P:根据CPU使用大小进行排序。

T:根据时间、累计时间排序。

q:退出top命令。

m:切换显示内存信息。

t:切换显示进程和CPU状态信息。

c:切换显示命令名称和完整命令行。

M:根据使用内存大小进行排序。

W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

free

1.作用

free命令用来显示内存的使用情况,使用权限是所有用户。

2.格式

free

3.主要参数

-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。

-s delay:显念梁示每隔多少秒数来显示一次内存使用情况。

-t:显示内存总和列。

-o:不显示缓冲区调节列。

uptime

18:59:15 up 25 min, 2 users, load average: 1.23, 1.32, 1.21

现在的时间

系统开机运转到现在经过的时间

连线的绝皮使用者数量

最近一分钟,五分钟和十五分钟的系统负载

参数: -V 显示版本资讯。

vmstat

procemoryswapiosystemcpu—-

r b swpd free buff cache si so bi bo in cs us sy id wa

1 观察磁盘活动情况

磁盘活动情况主要从以下几个指标了解:

bi:表示从磁盘每秒读取的块数(blocks/s)。数字越大,表示读磁盘的活动越多。

bo:表示每秒写到磁盘的块数(blocks/s)。数字越大,表示写磁盘的活动越多。

wa:cpu等待磁盘I/O(未决的磁盘IO)的时间比例。数字越大,表示文件系统活动阻碍cpu的情况越严重,因为cpu在等待慢速的磁盘系统提供数据。wa为0是最理想的。如果wa经常大于10,可能文件系统就需要进行性能调整了。

2 观察cpu活动情况

vmstat比top更能反映出cpu的使用情况:

us:用户程序使用cpu的时间比例。这个数字越大,表示用户进程越繁忙。

sy: 系统调用使用cpu的时间比例。注意,NFS由于是在内核里面运行的,所以NFS活动所占用的cpu时间反映在sy里面。这个数字经常很大的话,就需要注 意是否某个内核进程,比如NFS任务比较繁重。如果us和sy同时都比较大的话,就需要考虑将某些用户程序分离到另外的服务器上面,以免互相影响。

id:cpu空闲的时间比例。

wa:cpu等待未决的磁盘IO的时间比例。

iostat

用于统计CPU的使用情况及tty设备、硬盘和CD-ROM的I/0量

参数:

-c 只显示CPU行

-d 显示磁盘行

-k 以千字节为单位显示磁盘输出

-t 在输出中包括时间戳

-x 在输出中包括扩展的磁盘指标

avg-cpu: %user %nice %sys %iowait %idle

20.25 0.18 2.61 76.39 0.57

%iowait 等待本地I/O时CPU空闲时间的百分比

%idle 未等待本地I/O时CPU空闲时间的百分比

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

hda 9.86 284.34 84.

linux pr的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux pr,深度解析Linux PR调度算法,提升系统性能,如何查看Linux下系统占用的资源?的信息别忘了在本站进行查找喔。


数据运维技术 » 深度解析Linux PR调度算法,提升系统性能 (linux pr)