环境:Linux Redhat 5.4 32位,CPU8核
Java代码如下:
class Loop {
public static void main(String[] args) {
for(int i=0;i<7;i++)
new Thread(new Runnable(){
public void run() {
while(true);
}
}).start();
while(true);
}
}
编译后启动,输入top命令可看到:
Tasks: 215 total, 1 running, 214 sleeping, 0 stopped, 0 zombie
Cpu(s):100.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 16580348k total, 7986304k used, 8594044k free, 577356k buffers
Swap: 16777208k total, 0k used, 16777208k free, 5988556k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18833 flow 18 0 1176m 18m 7620 S 798.5 0.1 2:11.62 java
按1后可显示每个CPU核的情况:
top - 15:02:39 up 15 days, 3:40, 4 users, load average: 7.17, 2.92, 1.24
Tasks: 215 total, 1 running, 214 sleeping, 0 stopped, 0 zombie
Cpu0 :100.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 :100.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 99.7%us, 0.3%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 99.3%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.3%hi, 0.3%si, 0.0%st
Cpu4 :100.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu5 :100.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu6 :100.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu7 :100.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 16580348k total, 7986616k used, 8593732k free, 577396k buffers
Swap: 16777208k total, 0k used, 16777208k free, 5989628k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18833 flow 18 0 1176m 18m 7620 S 793.3 0.1 9:44.87 java
由此可见8个线程占用了8个CPU核的资源,资源达到100%。
我们修改下代码,改成:
class Loop {
public static void main(String[] args) {
while(true);
}
同样按top命令,可看到就只有1个CPU达到100%(注某一时刻可能是核1,过会可能是核2),其他几个CPU核均很小。
由此可见,1个线程只会使用1个cpu核资源,多线程可充分利用物理资源。
看过Mina的童鞋应该知道,Mina的推荐的IoProcessor线程池IO线程数为核数+1就是这个原因。
分享到:
相关推荐
在这个场景中,我们讨论的是一个使用易语言编写的源码,用于获取进程中CPU的占用率,甚至还能获取CPU的核心数量,这对于多线程编程和系统资源管理特别有帮助。 首先,我们需要理解什么是CPU占用率。CPU占用率是指...
本文提出了在系统层面动态调整CPU核数的总体思路,减少许可证占用,与最大作业数匹配,并进行实效分析,得出在实际应用当中非常有实用价值的结论。 (二)几种不符的CPU核数调整方案 (1)Intel超线程技术HT:这种...
测试消耗CPU和内存资源...3 ---- 单位核数,占用3个核, 如果一共8个核,那么大概占用 3/8=37.5%的cpu资源 1024 ---- 单位M,表示 占用 内存 1G 30 ---- 单位秒,表示 持续运行30秒,然后脚本自动释放CPU资源和内存资源
Java中的多线程技术是Java进阶学习的重要组成部分,它涉及到并发编程的理论与实践,旨在提高程序的执行效率和响应速度。以下是对多线程技术的详细解释: 1. **CPU调度算法原理** - **先来先服务(FCFS)**:按照...
Java多线程优化方法及使用方式 Java多线程优化方法及使用方式可以分为以下几个方面: 一、多线程介绍 在编程中,我们不可逃避的会遇到多线程的编程问题,因为在大多数的业务系统中需要并发处理,如果是在并发的...
同时,对于多核处理器,了解CPU核心数对于优化多线程程序或者进行负载均衡计算非常关键。 标签中的"GetSy"可能是“GetSystem”的简写,强调了获取系统信息这一动作。在易语言中,除了`GetSystemInfo`,还有其他API...
在Android MTK设备上,通过ADB手动设置CPU核数和频率可以帮助优化性能,解决因Thermal过高导致的性能下降问题。然而,这些操作需要对Android系统有一定的了解,并且应谨慎进行,因为不恰当的操作可能会对设备稳定性...
物理cpu数量,在Linux上查看/proc/cpuinfo,其中的physical id就是每个物理CPU的id,有几个不同的physical id就有几个物理CPU。 grep 'physical id' /proc/cpuinfo|sort|uniq|wc -l cpu核数: 每颗物理CPU可以有1...
根据 CPU 核心数和线程数选择合适的多线程策略;而了解 CPU 的指令集则有助于优化软件代码,使其更好地利用硬件特性。 总的来说,全面掌握 CPU 的各项参数是提升系统性能的关键步骤,无论是系统管理员还是开发者,...
#### 四、总核数与总逻辑CPU数 **定义:** - **总核数** = 物理CPU个数 × 每颗物理CPU的核数 - **总逻辑CPU数** = 物理CPU个数 × 每颗物理CPU的核数 × 超线程数 **示例:** 假设系统中有2个物理CPU,每个物理...
在IT系统管理中,批量获取主机信息是一项常用的任务,尤其在多服务器环境中,这能帮助我们快速了解系统状态。在Linux系统中,我们可以利用shell脚本来实现这一目标。本篇文章将详细讲解如何编写一个shell脚本来批量...
在Java编程中,获取服务器硬件信息是常见的需求,特别是在系统监控、性能分析或者资源管理的场景下。Siger(可能是“System Information Gatherer”的缩写)是一个可能的库,用于帮助开发者轻松地获取包括CPU、内存...
【标题】"gh0st源码-(ddos和cpu核数与开机时间)"涉及的是一个恶意软件的源代码,该软件具有分布式拒绝服务攻击(DDoS)功能,并能获取目标系统的CPU核心数量和开机时间。这里我们将深入探讨gh0st恶意软件、DDoS攻击...
在Linux系统中,多核CPU的使用率管理是优化系统性能和资源分配的重要环节。"linux-让多核CPU达到指定的CPU使用率脚本"是一个旨在提升机器CPU使用率的实用工具,它能帮助系统管理员更好地控制和利用计算资源。下面...
近在项目里面使用了多线程处理技术,感觉对数据很多批量处理效果蛮好,所以在这里记录下来,给自己一个日子,也分享给大家! 1.首先根据条件得到你的数据集合dataList(此处用dataList表示) 1.1个人觉得如果...
在本资源中,我们将讨论 ANSYS 多 CPU 并行计算设置的相关知识点。ANSYS 是一款常用的有限元分析软件,用于模拟和分析复杂的工程问题。然而,在进行大规模模拟时,ANSYS 需要占用大量的内存和计算资源,否则可能会...
6、CPU核数 7、显卡型号 8、显卡显存 9、总内存 10、jdk版本 11、mysql 版本 12、redis 版本 13、python 版本 14、GCC 版本 15、CUDA 版本 后续有什么可以继续加。大家也可以留言,需要什么我会找时间加到里面,并...