做境外旅游的网站温州建筑信息平台

pingmian/2025/10/7 14:13:39/文章来源:
做境外旅游的网站,温州建筑信息平台,南通专业网站制作,自己如何建设个网站相信不少小伙伴面试时#xff0c;都被问到过这样一个问题#xff1a;进程和线程的区别是什么#xff1f;大学老师会告诉我们#xff1a;进程是资源分配的基本单位#xff0c;线程是调度的基本单位。说到调度#xff0c;就不得不提到CPU的上下文切换了。 何为CPU上下文切换…        相信不少小伙伴面试时都被问到过这样一个问题进程和线程的区别是什么大学老师会告诉我们进程是资源分配的基本单位线程是调度的基本单位。说到调度就不得不提到CPU的上下文切换了。 何为CPU上下文切换 “CPU上下文切换这是个啥呢” “唔我来告诉你吧。。在多猫系统中上下文切换时很常见的事情。。。饭盆的个数是有限的一只猫一天的猫粮也是有数的。有的猫吃了一半的猫粮要把它剩下的猫粮暂存起来把饭盆里的猫粮切换为另一只猫的” “类似地这个玩意放在计算机里面也是一样的” 在多任务操作系统中CPU需要在不同的进程或线程之间切换以实现并发执行。每个进程或线程都有自己的上下文CPU寄存器状态。 CPU 寄存器是 CPU 内置的容量小、但速度极快的存储。比如         程序计数器Program CounterPC也称为指令计数器通常是放在CPU内部的一个特殊寄存器中的。程序计数器的主要作用是存储下一条要执行的指令的地址。当CPU执行指令时程序计数器会更新为下一条指令的地址确保CPU能够按顺序执行程序中的指令。         页表的起始地址每个进程都有自己的虚拟内存在内核中需要通过页表来映射虚拟内存到物理内存页表的起始地址一般存放在页表基址寄存器。 这些寄存器状态它们所维护的环境都是 CPU 在运行任何任务前必须的依赖环境因此也被叫做 CPU 上下文。当操作系统决定从当前执行的任务切换到另一个任务时它需要保存当前任务的上下文并加载新任务的上下文这个过程就是上下文切换。 上下文切换的种类 “寄存器不是极快吗怎么老是听说上下文切换开销很大” 前面说了CPU保存旧任务的上下文切换新任务的上下文然后开始执行新任务。那切换从任务角度来讲有这么几种 进程上下文切换 众所周知进程由内核来管理和调度每个进程有自己的时间片时间片耗尽进程还没有结束就会被内核调度出去重新排队等待转而切换一个新的已就绪进程开始执行。这个过程就需要进行进程上下文切换。 都知道虚拟内存需要通过页表转换为物理内存由于多级页表多次访问内存效率太低增加了快表(TLB)大大提升了地址转换的效率。由于进程切换新老进程的页表肯定是不一样的这就会导致快表失效继而新的进程要将虚拟地址转换到物理地址无法使用快表缓存。所以进程上下文切换开销是比较大的。 线程上下文切换 大学老师提醒过我们了线程是调度的基本单位而进程则是资源分配的基本单位。说白了所谓内核中的任务调度实际上的调度对象是线程而进程只是给线程提供了进程栈等资源。同一个进程的不同线程共享了进程ID、打开的文件描述符、根目录等等资源。 那么理所应当的同一个进程的不同线程间的上下文切换开销较小因为部分资源是共享的。当然开销还是有一定开销的比如线程有自己的私有的线程栈、线程ID、程序计数器等资源。 至于不同进程的线程的切换其实就是前面说的进程上下文切换。 中断上下文切换 中断是硬件设备用来通知 CPU 需要处理某些事件的机制。当硬件设备如网络卡、硬盘、鼠标或键盘等需要 CPU 注意时它们会发送一个中断信号。CPU 响应这个信号并执行相应的中断服务例程ISR来处理事件。 如果你打开了一个文本编辑器输入了一个字符‘a’键盘控制器会向 CPU 发送一个中断信号。CPU 接收到中断信号后会停止执行当前正在执行的任务并跳转到键盘中断处理程序。键盘中断处理程序会读取键盘控制器中的数据并根据这些数据来确定用户按下了哪个键。然后键盘中断处理程序会将这个信息传递给用户程序用户程序就会显示你插入了一个‘a’。 在这个过程中中断处理打断了进程的正常调度和执行顺序转而调用中断处理程序响应来自键盘的设备事件。而在打断其他进程时就需要将进程当前的状态保存下来这样在中断结束后进程仍然可以从原来的状态恢复运行。 跟进程上下文不同中断上下文切换并不涉及到进程用户态资源的访问。所以即便中断过程打断了一个正处在用户态的进程也不需要保存和恢复这个进程的进程栈等用户态资源。中断上下文其实只包括内核态中断服务程序执行所必需的状态包括 CPU 寄存器、内核堆栈、硬件中断参数等等。 上下文切换过多的问题 上下文切换虽然是操作系统设计中的必要机制但是过多的上下文切换会导致CPU花费大量时间在任务切换上而不是任务执行上从而降低系统的整体性能。这种情况通常发生在以下几种情况 系统中运行了过多的进程或线程。高频率的IO操作导致频繁的中断。锁竞争激烈导致线程频繁地进入和退出临界区。 排查上下文切换过多的问题 当我们怀疑系统性能下降可能是由于上下文切换过多时可以通过以下方法进行排查 vmstat命令 vmstat用来查看关于系统的虚拟内存、进程、CPU活动以及IO统计的信息。vmstat提供了关于系统性能的即时报告帮助管理员理解系统的内存使用情况、进程状态、系统等待队列以及磁盘IO和CPU使用情况。vmstat的输出通常包含以下几个部分 procs进程     r等待运行的进程数。     b处于不可中断睡眠状态的进程数。 memory内存     swpd虚拟内存使用量。     free空闲内存量。     buff用作缓冲的内存量。     cache用作缓存的内存量。 swap交换空间     si每秒从交换空间读入内存的量。     so每秒写入交换空间的内存量。 io输入/输出     bi每秒读取的块数。     bo每秒写入的块数。 system系统     in每秒中断次数包括时钟中断。     cs每秒上下文切换次数。 cpu处理器     us用户空间占用CPU的百分比。     sy内核空间占用CPU的百分比。     id空闲CPU百分比。     wa等待IO的CPU时间百分比。     st被偷取的时间百分比在虚拟化环境中其他虚拟机占用的CPU时间。 每2秒输出一次报告共输出3次 ps通过命令模拟了多线程并发场景sysbench --threads10 --max-time300 threads run rootgl:/home/gl# vmstat 2 3 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r b swpd free buff cache si so bi bo in cs us sy id wa st6 0 0 1250924 48464 600112 0 0 17 10 195 972 0 1 99 0 05 0 0 1250924 48464 600112 0 0 0 0 16138 743482 23 72 5 0 05 0 0 1250924 48464 600112 0 0 0 0 15653 737597 22 71 7 0 0 vmstat第一行的输出表示的是自系统启动以来的平均负载后面的行才表示当前间隔时间内的状态。从上面的数据可以看出来自启动启动以来(cs)平均上下文切换、(in)每秒中断次数都比较低。但是当前时间下cs和in突发性的增大了好几个数量级 前面说了引发上下文切换过多可能的原因大致有三种线程/进程太多、io频繁、锁频繁。接下来进一步再通过pidstat分析一下是哪种原因。 pidstat pidstat是一个监控个别任务的性能的工具可以用来查看特定进程的上下文切换情况。运行看下输出 rootgl:/home/gl# pidstat -wt 1 Linux 4.15.0-213-generic (gl) 01/17/2024 _x86_64_ (2 CPU)06:49:41 AM UID TGID TID cswch/s nvcswch/s Command 06:49:42 AM 0 7 - 2.83 0.00 ksoftirqd/0 06:49:42 AM 0 - 7 2.83 0.00 |__ksoftirqd/0 06:49:42 AM 0 8 - 28.30 0.00 rcu_sched 06:49:42 AM 0 - 8 28.30 0.00 |__rcu_sched 06:49:42 AM 0 123 - 0.94 0.00 kworker/1:2 06:49:42 AM 0 - 123 0.94 0.00 |__kworker/1:2 ... 06:49:42 AM 0 10180 10181 7343.40 69718.87 (sysbench)__sysbench 06:49:42 AM 0 - 10182 8820.75 60550.00 |__sysbench 06:49:42 AM 0 - 10183 7120.75 66724.53 |__sysbench 06:49:42 AM 0 - 10184 5205.66 65349.06 |__sysbench 06:49:42 AM 0 - 10185 8678.30 65187.74 |__sysbench 06:49:42 AM 0 - 10186 8339.62 66105.66 |__sysbench 06:49:42 AM 0 - 10187 6755.66 55736.79 |__sysbench 06:49:42 AM 0 - 10188 6559.43 62579.25 |__sysbench 06:49:42 AM 0 - 10189 7974.53 61872.64 |__sysbench 06:49:42 AM 0 - 10190 5702.83 64549.06 |__sysbench 06:49:42 AM 0 10192 - 0.94 0.94 pidstat 06:49:42 AM 0 - 10192 0.94 0.94 |__pidstat 其中有两列可以重点关注一下 cswch/s表示每秒自愿上下文切换voluntary context switches的次数。nvcswch/s表示每秒非自愿上下文切换non voluntary context switches的次数。 所谓自愿上下文切换是指进程所需资源尚未就绪导致的上下文切换。比如说 内存、IO、锁等系统资源不足或者时就会发生自愿上下文切换。而非自愿上下文切换则是指进程由于时间片已到等原因被系统强制调度导致的上下文切换。比如说大量进程都在就绪队列等待就容易发生非自愿上下文切换。 可以看到sysbench这个程序有多个子线程存在大量的上下文切换尤其以非自愿上下文切换为多。此时可以合理怀疑是由于sysbench线程数太多导致cpu上下文频繁切换引起的系统卡顿。  再回到vmstat的输出不仅(cs)切换次数高(in)中断数也高所以此时也不能断定就是线程数太多导致的因为也可能是某种中断次数太多导致中断上下文切换频繁 /proc/interrupts /proc/interrupts 是 Linux 系统中的一个特殊文件它提供了关于 CPU 中断的实时信息。这个文件包含了系统中每个中断请求IRQ的统计数据包括每个中断的编号、类型、设备名称以及每个 CPU 上的中断计数。 rootgl:/home/gl# cat /proc/interrupts CPU0 CPU1 ... NMI: 0 0 Non-maskable interrupts LOC: 293139 729565 Local timer interrupts SPU: 0 0 Spurious interrupts PMI: 0 0 Performance monitoring interrupts IWI: 0 0 IRQ work interrupts RTR: 0 0 APIC ICR read retries RES: 2889219 2818044 Rescheduling interrupts CAL: 7324 1630 Function call interrupts TLB: 17 38 TLB shootdowns TRM: 0 0 Thermal event interrupts THR: 0 0 Threshold APIC interrupts DFR: 0 0 Deferred Error APIC interrupts ... 多输出几次就可以发现其中增长比较明显的是Rescheduling interrupts。从字面意思也可以看出来这个中断表示重调度中断也就是cpu调度任务触发的中断。 “这下可以石锤了还说不是你” sysbench

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深圳网站设计小程序外贸 网站推广

对我而言,使用Rx-java的最大好处之一就是无论底层调用是同步还是异步,因此代码看起来都完全相同,因此该条目的标题也是如此。 考虑一个非常简单的客户端代码用例,它执行三个缓慢运行的调用并将结果合并到一个列表中: …

手机建造网站江苏SEO网站建设

题目链接&#xff1a;http://poj.org/problem?id3041 没看题&#xff0c;网上搜最大二分匹配搜到的 匈牙利算法&#xff0c;深搜一次最多增加一个匹配 代码&#xff1a; #include <stdio.h> #include <stdlib.h> int tu[505][505]; int mx[505],my[505]; int flag…

wordpress网站百度数据表格模板网站

目录 一、环境搭建 二、信息收集 1、主机发现 2、指纹识别 三、漏洞复现 1、dirsearch目录探测 2、sqlmap注入测试 3、文件包含漏洞 4、Knockd敲门服务 5、ssh爆破 ​​​​​​​6、提权 四、提取flag 一、环境搭建 Vulnhub靶机下载&#xff1a; 官网地址&#xff1a;https://…

环县网站怎么做湘潭专业sem优化

Css 处理 提取 Css 成单独文件 Css 文件目前被打包到 js 文件中&#xff0c;当 js 文件加载时&#xff0c;会创建一个 style 标签来生成样式 这样对于网站来说&#xff0c;会出现闪屏现象&#xff0c;用户体验不好 我们应该是单独的 Css 文件&#xff0c;通过 link 标签加载…

柳城网站天津平台网站建设制作

来源&#xff1a;混沌巡洋舰圣塔菲研究院4月就智能的本质&#xff08;不管其是人类的&#xff0c;还是机器的&#xff09;举行的研讨会&#xff0c;旨在通过跨学科的整合来促进人工智能的发展。研讨会期间&#xff0c;来自不同学科的大牛聚集在一起&#xff0c;讨论如何将智力分…

邵阳建设网站哪家好网站建设长春

nvm-sh/nvm Stars: 67.6k License: MIT Node Version Manager&#xff0c;是一个 POSIX 兼容的 bash 脚本&#xff0c;用于管理多个活动 node.js 版本。nvm 可以让你通过命令行快速安装和使用不同版本的 Node。它可以在任何符合 POSIX 标准的 shell&#xff08;sh、dash、ksh…

天津塘沽网站建设公司电子贺卡制作软件app

深圳女作家、画家崔文僮的散文绘画集出版。该书是她观察生活、体验人生、感悟艺术的真实记录。著名女作家徐小斌看了她的文章和绘画&#xff0c;写道&#xff1a;“‘生活家’这个概念令人非常感兴趣。文僮决定做一个‘有追求’的‘生活家’&#xff0c;这本身就十分有趣&#…

暴雪战网官方网站入口小程序头条小游戏

1 卷积介绍 1.1 什么是卷积 卷积&#xff08;convolution&#xff09;&#xff0c;是一种运算&#xff0c;你可以类比于加&#xff0c;减&#xff0c;乘&#xff0c;除&#xff0c;矩阵的点乘与叉乘等等&#xff0c;它有自己的运算规则&#xff0c;卷积的符号是星号*。表达式…

做一个响应式网站价格网站备案 修改

目录 三、FP-增长算法&#xff08;一&#xff09;算法的背景&#xff08;二&#xff09;构造FP-树&#xff08;三&#xff09;生成频繁项集 四、关联规则的评价&#xff08;一&#xff09;支持度和置信度的不足&#xff08;二&#xff09;相关性分析 三、FP-增长算法 &#xf…

网站开发报价单 excel网站功能策划书

Python搭建简单的web服务器 1.winR输入cmd打开命令行 2.通过 cd 进入到你保存 HTML 文件的目录。例如&#xff1a;H:\D3\d3 输入 cd\ 指令进入到C盘的根目录。&#xff08;CD&#xff08;更改目录&#xff09;。使用此命令可以更改当前目录&#xff09; 这里解释一下cd指令基本…

科院公司网站建设目标是什么上海虹口网站建设

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 根据AS自治系统可以将动态路由协议划分为IGP和EGP协议。IGP协议是应用在AS内部&#…

网站建设先进个人事迹崔凯 本地wordpress

Redis持久化机制的三种方式&#xff1a;RDB、AOF和混合持久化 Redis是一种高性能的内存数据结构存储系统&#xff0c;它提供了丰富的数据结构和操作&#xff0c;如键值对、列表、集合、哈希表等。然而&#xff0c;由于Redis是内存存储&#xff0c;一旦服务器停止运行&#xff…

单位的网站建设费如何核算延边省建设局网站官网

vim 快速跳到文件末尾 在最后一行下方新增一行 移到末尾,并且进入文本录入模式 GA (大写G大写A) 在一般模式(刚进入的模式,esc模式) GA 或 Shift ga 先 G 或 shiftg 到最后一行 然后 A 或 shifta 到本行末尾 并且进入文本录入模式 在最后一行下方新增一行 (光标换行,文字不…

劳务派遣做网站的好处asp 网站运行

不再多言 玩者自知しょぼんのアクション猫版超级玛丽 下载

手机怎么创网站免费惠阳区城市建设规划局网站

文 | 琴梨梨源 | 知乎今天无聊刷GitHub看到一个让我血压上来的项目乍一看&#xff0c;2.4k star&#xff0c;应该不像是什么小项目应该是比较有用的项目&#xff0c;但接下来的事情属实是让我气的很对于开源项目我是不喜欢下载预构建的成品的&#xff0c;我更喜欢自己动手从源代…

佛山网站建设佛山网络推广保定网站建设找谁

如何使用 dotnet pack 打包 .NET 跨平台程序集&#xff1f; dotnet pack 介绍官方描述 dotnet pack 命令说明使用示例打包 .net 类库项目生成带注释的 nuget 包构建特定平台的 nuget 包关于 .NET RID 目录 dotnet pack 介绍 dotnet pack 是一个 .NET Core NuGet 包打包程序。 …

制作网站制作公司甘肃省建设厅查行网站

目录 1 学习路线图2 应用介绍3 编辑器介绍总结 低代码的概念于2014年由 Forrester 首次正式提出。其将低代码定义为&#xff1a;能够以“最少的手写代码”和设置快速开发应用、配置和部署业务应用程序。 不同应用厂商的解法不一样&#xff0c;Gartner评估了400多款低代码/无代码…

wordpress建站怎么上传公司企业宣传片的拍摄

6 分布式系统 Redis 分布式系统&#xff0c;官方称为 Redis Cluster&#xff0c;Redis 集群&#xff0c;其是 Redis 3.0 开始推出的分布式解决方案。其可以很好地解决不同 Redis 节点存放不同数据&#xff0c;并将用户请求方便地路由到不同 Redis 的问题。 什么是分布式系统?…

如何在网站做电子报深圳福田香格里拉酒店

火狐浏览器是我们大家经常使用的浏览器之一&#xff0c;在使用这款浏览器的过程有时候需要使用到摄像头&#xff0c;那你知道火狐浏览器摄像头权限怎么开启的吗?接下来我们一起往下看看火狐浏览器摄像头权限开启的方法吧。 方法步骤 1、打开火狐浏览器&#xff0c;点击右上角…

建设一个网站最低消费微信开放平台创建小程序

Part11-Join Algorithms Why Do We Need to Join? Join其实是关系数据库和范式化表时候所产生的副产物。 也就是说我们范式化表是为了减少冗余信息&#xff0c;而我们使用join就是为了去重建reconstruct 这些原本的tuple Join Algorithms 主要关注两表的inner equijoin a…