html tool

显示标签为“os”的博文。显示所有博文
显示标签为“os”的博文。显示所有博文

2022年11月10日星期四

转:进程优先级,进程nice值和%nice的解释

 https://blog.csdn.net/qq_44222849/article/details/105802672

【popexizhi:这里对NI和%nice 很清晰,赞!

总结一下,优先级是进入cpu前的队列 权限;而Nice是单位时间cpu分片给你的个数,前者是排号先后,后者是可以都给你的资源,维度不一致;优先级是插队,而nice是排队后供应的内容可以多给你的量,你有优先级,是认识管理排队的人,排队前后走后门;而nice可是认识买东西的,买的时候直接多给你啊!!! 不过两者好像都有用,资源有限时,你就是nice在低,排队靠后,当轮到你时就没有可以买给你的了吧?!再想想,这里的资源是时间片,逻辑上应该是没有耗尽的,所以nice一定有用的!:)

用top或者ps命令会输出PRI/PR、NI、%ni/%nice这三种指标值,这些到底是什么东西?先给出大概的解释如下:

PRI :进程优先权,代表这个进程可被执行的优先级,其值越小,优先级就越高,越早被执行

NI :进程Nice值,代表这个进程的优先值

%nice :改变过优先级的进程的占用CPU的百分比 (呵呵,这句好难理解是吧,不急慢慢来_)[popexizhi: 从下面的例子上看,这里可以理解为, 对一个进程单位时间,系统最多可以给你 两个进程的时间片-20,至于你定义多少NI一定在这个范围,而%nice 是你计划多要的/可以多给你的-20 比例 ]

PRI是比较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小进程的优先级别越高。那NI呢?就是我们所要说的nice值了,其表示进程可被执行的优先级的修正数值。如前面所说,PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice。由此看出,PR是根据NICE排序的,规则是NICE越小PR越前(小,优先权更大),即其优先级会变高,则其越快被执行。如果NICE相同则进程uid是root的优先权更大。

在LINUX系统中,Nice值的范围从-20到+19(不同系统的值范围是不一样的),正值表示低优先级,负值表示高优先级,值为零则表示不会调整该进程的优先级。具有最高优先级的程序,其nice值最低,所以在LINUX系统中,值-20使得一项任务变得非常重要;与之相反,如果任务的nice为+19,则表示它是一个高尚的、无私的任务,允许所有其他任务比自己享有宝贵的CPU时间的更大使用份额,这也就是nice的名称的来意。

进程在创建时被赋予不同的优先级值,而如前面所说,nice的值是表示进程优先级值可被修正数据值,因此,每个进程都在其计划执行时被赋予一个nice值,这样系统就可以根据系统的资源以及具体进程的各类资源消耗情况,主动干预进程的优先级值。在通常情况下,子进程会继承父进程的nice值,比如在系统启动的过程中,init进程会被赋予0,其他所有进程继承了这个nice值(因为其他进程都是init的子进程)。

对nice值一个形象比喻,假设在一个CPU轮转中,有2个runnable的进程A和B,如果他们的nice值都为0,假设内核会给他们每人分配1k个cpu时间片。但是假设进程A的为0,但是B的值为-10,那么此时CPU可能分别给A和B分配1k和1.5k的时间片。故可以形象的理解为,nice的值影响了内核分配给进程的cpu时间片的多少,时间片越多的进程,其优先级越高,其优先级值(PRI)越低。%nice,就是改变过优先级的进程的占用CPU的百分比,如上例中就是0.5k/2.5k=1/5=20%。

由此可见,进程nice值和进程优先级不是一个概念,但是进程nice值会影响到进程的优先级变化。

进程的nice值是可以被修改的,修改命令分别是nice和renice。

1、nice命令就是设置一个要执行command进程的nice值,其命令格式是 nice –n adjustment command command_option,如果这里不指定adjustment,则默认为10。

2、renice命令就是设置一个已经在运行的进程的nice值,假设一运行进程本来nice值为0,renice为3后,则这个运行进程的nice值就为3了。

说明:如果用户设置的nice值超过了nice的边界值(LINUX为-20到+19),系统就取nice的边界值作为进程的nice值。

举例如下:

对非root用户,只能将其底下的进程的nice值变大而不能变小。若想变小,得要有相应的权限。

[oracle@perf_dbc ~]$ nice
  • 1

0

[oracle@perf_dbc ~]$ nice -n 3 ls
  • 1

agent bin important_bak logs statistics_import.log TMP_FORUM_STATS.dmp TMP_TAOBAO_STATS.dmp TMP_TBCAT_STATS.dmp top.dmp worksh

[oracle@perf_dbc ~]$ nice -n -3 ls
  • 1

nice: cannot set priority: Permission denied

对root用户,可以给其子进程赋予更小的nice值。

[root@dbbak root]# nice
  • 1

0

[root@dbbak root]# nice -n -3 ls
  • 1

192.168.205.191.txt anaconda-ks.cfg clariion.log Desktop disk1 emc.sh File_sort install.log install.log.syslog log OPS rhel_os_soft root_link_name

同样,renice的执行也必须要有相应的权限方可执行。

2017年8月22日星期二

SmartOS

参考:
http://blog.csdn.net/babyfacer/article/details/21108165
http://blog.csdn.net/babyfacer/article/details/8577333

【popexizhi: 这样看来smartOS应该是自己的下一个熟悉的目标,solaris的另一个涅磐;Dtrace】


部分原文:
在与Fengqi.Asia风起云)的潜在客户接触时,经常被问到如下问题:
  • 为什么我要用从Linux换到SmartOS,一个我不熟悉的系统?
  • 什么是SmartOS?
  • 你们使用的是Joyent的技术,那么Joyent是干嘛的?
  • SmartOS用的是Linux的哪个发行版?
  • ……
我在之前的博客里介绍过SmartOS(这里转载)。这里再说一下。首先SmartOS是基于illumos的。Illumos是从OpenSolaris继承而来的开源产品,而OpenSolaris又是基于Sun的Solaris 10操作系统而来的。所以SmartOS并不是运行于任何一个操作系统之上的应用系统,它本身就是操作系统。在Fengqi.Asia风起云)和Joyent,我们把它当成是一个hypervisor,在上面运行Linux、Windows、FreeBSD和在KVM上的虚拟机。KVM是Joyent从linux里剥离出来移植到SmartOS上的(参考链接)。
此外,SmartOS支持操作系统虚拟化,虚拟出SmartMachine。和KVM类似,一个SmartMachine看上去就是一个完整的机器,有自己的硬件(存储、网络和处理器)和操作系统以及库文件等。和KVM不同的是,没有格外的虚拟化层。这意味着不同的SmartMachine在同一硬件上共用操作系统(SmartOS)。
那为什么要推荐使用SmartMachine或SmartOS,而不是Linux呢?
从high level的角度来看,主要有以下几个原因:
  • 性能
  • 可观测性(Observability)
  • 可靠性
我们来逐个细看。以下不仅适用于虚拟机,也适用于裸机。

2016年3月27日星期日

time.sleep 与操作系统的关系

问题:
要求有0.001s的延时
发现python并不能满足要求

测试结果发现总是在0.01的间隔中
想测试一下到底有多大的误差
发现和os有关,参见如下:

对0.005 window7 64没有能支持
但是
NAME="Ubuntu"
VERSION="14.04.3 LTS, Trusty Tahr"

还是可以的.
对0.001s也可以,如下



2014年6月11日星期三

Symbolic Link 与 Windows 的快捷方式 的异同

在看<鸟哥的linux私房菜>的 “第八章、Linux 磁盘与文件系统管理” 提到

Symbolic Link 与 Windows 的快捷方式可以给他划上等号,由 Symbolic link 所创建的文件为一个独立的新的文件,所以会占用掉 inode 与 block 喔!

而自己之前读goagent源码时查过这个 symbolic link 与快捷方式的关系好像是不一样的(参见http://popexizhi.blogspot.com/2014/02/pythonospathislinkosreadlink27.html)
 今天再次go了一下两者的关系,确实差别不小参见下文转载:
(转载地址:
[中文译本]http://www.cnblogs.com/heqichang/archive/2012/04/26/2471774.html
[原文位置]http://www.maxi-pedia.com/mklink
参考wiki中对windows系统中这两者的区别:http://zh.wikipedia.org/wiki/%E7%AC%A6%E5%8F%B7%E9%93%BE%E6%8E%A5#Windows.E6.93.8D.E4.BD.9C.E7.B3.BB.E7.BB.9F
)

Windows下硬链接、软链接和快捷方式的区别

mklink是windows系统下创建符号链接和硬链接的命令工具,它是一个很好的解决文件系统问题的工具。使用它需要管理员权限。
首先,先来介绍下mklink这个命令,可以看下下面的截图:
Capture
说明也已经很详细了,我们直接看下面例子吧。

下面的图片向我们展示了在windows系统中创建符号链接,硬链接和快捷方式有什么不同。
符号链接Symbolic link
  • 执行命令 mklink link_name target_name
  • 创建链接后的图标和快捷方式很像
  • 在系统中不占用空间
  • 在文件系统中不是一个单独的文件
  • 在操作系统层解析(!?)
  • 如果源文件被删除了,链接就没用了
  • 移除源文件不会影响符号链接
  • 移除链接文件也不会影响源文件
硬链接(Hard link)
  • 执行命令 mklink /H link_name target_name
  • 在系统中占用的空间与源文件相同,但在系统中引用的是相同的对象(不是拷贝)
  • 在操作系统层解析(!?)
  • 图标和创建快捷方式的图标不同
  • 移除源文件不会影响硬链接
  • 移除硬链接不会影响源文件
  • 如果源文件被删除,它的内容依然通过硬链接存在
  • 硬链接文件的任何更改都会影响到源文件
快捷方式(Shortcut)
  • 在选择的源文件上鼠标右键,通过下拉菜单创建
  • 快捷方式在系统中跟源文件是完全分离的
  • 只有那些懂得快捷方式的程序知道它们
  • 如果源文件删除,链接就没用了
  • 移除源文件不会移除快捷方式
  • 移除快捷方式不会影响到源文件
symlink_hardlink


顺便推荐一个实现这个功能的简单工具:Link Shell Extension