linux 线程cpu,linux 查看cpu个数

CPU线程指什么

CPU生产商为了提高CPU的性能,通常做法是提高CPU的时钟频率和增加缓存容量。不过目前CPU的频率越来越快,如果再通过提升CPU频率和增加缓存的方法来提高性能,往往会受到制造工艺上的限制以及成本过高的制约。>>>>尽管提高CPU的时钟频率和增加缓存容量后的确可以改善性能,但这样的CPU性能提高在技术上存在较大的难度。实际上在应用中基于很多原因,CPU的执行单元都没有被充分使用。如果CPU不能正常读取数据(总线/内存的瓶颈),其执行单元利用率会明显下降。另外就是目前大多数执行线程缺乏ILP(Instruction-LevelParallelism,多种指令同时执行)支持。这些都造成了目前CPU的性能没有得到全部的发挥。因此,Intel则采用另一个思路去提高CPU的性能,让CPU可以同时执行多重线程,就能够让CPU发挥更大效率,即所谓“超线程(Hyper-Threading,简称“HT”)”技术。超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率。>>>>采用超线程及时可在同一时间里,应用程序可以使用芯片的不同部分。虽然单线程芯片每秒钟能够处理成千上万条指令,但是在任一时刻只能够对一条指令进行操作。而超线程技术可以使芯片同时进行多线程处理,使芯片性能得到提升。>>>>超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程,P4处理器需要多加入一个LogicalCPUPointer(逻辑处理单元)。因此新一代的P4HT的die的面积比以往的P4增大了5%。而其余部分如ALU(整数运算单元)、FPU(浮点运算单元)、L2Cache(二级缓存)则保持不变,这些部分是被分享的。>>>>虽然采用超线程技术能同时执行两个线程,但它并不象两个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。>>>>英特尔P4超线程有两个运行模式,SingleTaskMode(单任务模式)及MultiTaskMode(多任务模式),当程序不支持Multi-Processing(多处理器作业)时,系统会停止其中一个逻辑CPU的运行,把资源集中于单个逻辑CPU中,让单线程程序不会因其中一个逻辑CPU闲置而减低性能,但由于被停止运行的逻辑CPU还是会等待工作,占用一定的资源,因此Hyper-ThreadingCPU运行SingleTaskMode程序模式时,有可能达不到不带超线程功能的CPU性能,但性能差距不会太大。也就是说,当运行单线程运用软件时,超线程技术甚至会降低系统性能,尤其在多线程操作系统运行单线程软件时容易出现此问题。>>>>需要注意的是,含有超线程技术的CPU需要芯片组、软件支持,才能比较理想的发挥该项技术的优势。目前支持超线程技术的芯片组包括如:英特尔i845GE、PE及矽统iSR658RDRAM、SiS645DX、SiS651可直接支持超线程;英特尔i845E、i850E通过升级BIOS后可支持;威盛P4X400、P4X400A可支持,但未获得正式授权。操作系统如:MicrosoftWindowsXP、MicrosoftWindows2003,Linuxkernel2.4.x以后的版本也支持超线程技术。

如何查看linux服务器的cpu数量,内核数,和cpu线程数

lscpu命令,查看的是cpu的统计信息.\x0d\x0ablue@blue-pc:~$ lscpu\x0d\x0aArchitecture: i686#cpu架构\x0d\x0aCPU op-mode(s): 32-bit, 64-bit\x0d\x0aByte Order: Little Endian#小尾序\x0d\x0aCPU(s): 4#总共有4核\x0d\x0aOn-line CPU(s) list: 0-3\x0d\x0aThread(s) per core: 1#每个cpu核,只能支持一个线程,即不支持超线程\x0d\x0aCore(s) per socket: 4#每个cpu,有4个核\x0d\x0aSocket(s): 1#总共有1一个cpu\x0d\x0aVendor ID: GenuineIntel#cpu产商 intel\x0d\x0aCPU family: 6\x0d\x0aModel: 42\x0d\x0aStepping: 7\x0d\x0aCPU MHz: 1600.000\x0d\x0aBogoMIPS: 5986.12\x0d\x0aVirtualization: VT-x#支持cpu虚拟化技术\x0d\x0aL1d cache: 32K\x0d\x0aL1i cache: 32K\x0d\x0aL2 cache: 256K\x0d\x0aL3 cache: 6144K\x0d\x0a \x0d\x0a查看/proc/cpuinfo,可以知道每个cpu信息,如每个CPU的型号,主频等。\x0d\x0a#cat/proc/cpuinfo\x0d\x0aprocessor: 0\x0d\x0avendor_id: GenuineIntel\x0d\x0acpu family: 6\x0d\x0amodel: 42\x0d\x0amodel name: Intel(R) Core(TM) i5-2320 CPU@ 3.00GHz\x0d\x0a.....\x0d\x0a上面输出的是第一个cpu部分信息,还有3个cpu信息省略了。\x0d\x0a \x0d\x0a内存\x0d\x0a概要查看内存情况\x0d\x0a free-m\x0d\x0a total used free shared buffers cached\x0d\x0a Mem: 3926 3651 274 0 12 404\x0d\x0a-/+ buffers/cache: 3235 691\x0d\x0a Swap: 9536 31 9505\x0d\x0a这里的单位是MB,总共的内存是3926MB。\x0d\x0a \x0d\x0a查看内存详细使用\x0d\x0a# cat/proc/meminfo\x0d\x0aMemTotal: 4020868 kB\x0d\x0aMemFree: 230884 kB\x0d\x0aBuffers: 7600 kB\x0d\x0aCached: 454772 kB\x0d\x0aSwapCached: 836 kB\x0d\x0a.....\x0d\x0a \x0d\x0a查看内存硬件信息\x0d\x0admidecode-t memory\x0d\x0a# dmidecode 2.11\x0d\x0aSMBIOS 2.7 present.\x0d\x0aHandle 0x0008, DMI type 16, 23 bytes\x0d\x0aPhysical Memory Array\x0d\x0a Location: System Board Or Motherboard\x0d\x0a....\x0d\x0a Maximum Capacity: 32 GB\x0d\x0a....\x0d\x0aHandle 0x000A, DMI type 17, 34 bytes\x0d\x0a....\x0d\x0aMemory Device\x0d\x0a Array Handle: 0x0008\x0d\x0a Error Information Handle: Not Provided\x0d\x0a Total Width: 64 bits\x0d\x0a Data Width: 64 bits\x0d\x0a Size: 4096 MB\x0d\x0a.....\x0d\x0a我的主板有4个槽位,只用了一个槽位,上面插了一条4096MB的内存。\x0d\x0a \x0d\x0a磁盘\x0d\x0a查看硬盘和分区分布\x0d\x0a# lsblk\x0d\x0aNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT\x0d\x0asda 8:0 0 465.8G 0 disk\x0d\x0a├—sda1 8:1 0 1G 0 part/boot\x0d\x0a├—sda2 8:2 0 9.3G 0 part [SWAP]\x0d\x0a├—sda3 8:3 0 74.5G 0 part/\x0d\x0a├—sda4 8:4 0 1K 0 part\x0d\x0a├—sda5 8:5 0 111.8G 0 part/home\x0d\x0a└—sda6 8:6 0 269.2G 0 part\x0d\x0a显示很直观\x0d\x0a \x0d\x0a如果要看硬盘和分区的详细信息\x0d\x0a# fdisk-l\x0d\x0aDisk/dev/sda: 500.1 GB, 500107862016 bytes\x0d\x0a255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors\x0d\x0aUnits= sectors of 1* 512= 512 bytes\x0d\x0aSector size(logical/physical): 512 bytes/ 4096 bytes\x0d\x0aI/O size(minimum/optimal): 4096 bytes/ 4096 bytes\x0d\x0aDisk identifier: 0x00023728\x0d\x0a Device Boot Start End Blocks Id System\x0d\x0a/dev/sda1* 2048 2148351 1073152 83 Linux\x0d\x0a/dev/sda2 2148352 21680127 9765888 82 Linux swap/ Solaris\x0d\x0a/dev/sda3 21680128 177930239 78125056 83 Linux\x0d\x0a/dev/sda4 177932286 976771071 399419393 5 Extended/dev/sda5 177932288 412305407 117186560 83 Linux\x0d\x0a/dev/sda6 412307456 976771071 282231808 83 Linux\x0d\x0a \x0d\x0a网卡\x0d\x0a查看网卡硬件信息\x0d\x0a# lspci| grep-i'eth'\x0d\x0a02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller(rev 06)\x0d\x0a \x0d\x0a查看系统的所有网络接口\x0d\x0a# ifconfig-a\x0d\x0aeth0 Link encap:以太网硬件地址 b8:97:5a:17:b3:8f \x0d\x0a.....\x0d\x0alo Link encap:本地环回 \x0d\x0a.....\x0d\x0a或者是\x0d\x0aip link show\x0d\x0a1: lo: mtu 16436 qdisc noqueue state DOWN\x0d\x0alink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\x0d\x0a2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000\x0d\x0alink/ether b8:97:5a:17:b3:8f brd ff:ff:ff:ff:ff:ff\x0d\x0a \x0d\x0a如果要查看某个网络接口的详细信息,例如eth0的详细参数和指标\x0d\x0a# ethtool eth0\x0d\x0aSettings for eth0:\x0d\x0a Supported ports: [ TP MII ]\x0d\x0a Supported link modes: 10baseT/Half 10baseT/Full\x0d\x0a 100baseT/Half 100baseT/Full\x0d\x0a 1000baseT/Half 1000baseT/Full#支持千兆半双工,全双工模式\x0d\x0a Supported pause frame use: No\x0d\x0a Supports auto-negotiation: Yes#支持自适应模式,一般都支持\x0d\x0a Advertised link modes: 10baseT/Half 10baseT/Full\x0d\x0a 100baseT/Half 100baseT/Full\x0d\x0a 1000baseT/Half 1000baseT/Full\x0d\x0a Advertised pause frame use: Symmetric Receive-only\x0d\x0a Advertised auto-negotiation: Yes#默认使用自适应模式\x0d\x0a Link partner advertised link modes: 10baseT/Half 10baseT/Full\x0d\x0a 100baseT/Half 100baseT/Full\x0d\x0a.....\x0d\x0a Speed: 100Mb/s#现在网卡的速度是100Mb,网卡使用自适应模式,所以推测路由是100Mb,导致网卡从支持千兆,变成要支持百兆\x0d\x0a Duplex: Full#全双工\x0d\x0a.....\x0d\x0a Link detected: yes#表示有网线连接,和路由是通的\x0d\x0a\x0d\x0a其他\x0d\x0a查看pci信息,即主板所有硬件槽信息。\x0d\x0alspci\x0d\x0a00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller(rev 09)#主板芯片\x0d\x0a00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller(rev 09)#显卡\x0d\x0a00:14.0 USB controller: Intel Corporation Panther Point USB xHCI Host Controller(rev 04)#usb控制器\x0d\x0a00:16.0 Communication controller: Intel Corporation Panther Point MEI Controller#1(rev 04)\x0d\x0a00:1a.0 USB controller: Intel Corporation Panther Point USB Enhanced Host Controller#2(rev 04)\x0d\x0a00:1b.0 Audio device: Intel Corporation Panther Point High Definition Audio Controller(rev 04)#声卡\x0d\x0a00:1c.0 PCI bridge: Intel Corporation Panther Point PCI Express Root Port 1(rev c4)#pci插槽\x0d\x0a00:1c.2 PCI bridge: Intel Corporation Panther Point PCI Express Root Port 3(rev c4)\x0d\x0a00:1c.3 PCI bridge: Intel Corporation Panther Point PCI Express Root Port 4(rev c4)\x0d\x0a00:1d.0 USB controller: Intel Corporation Panther Point USB Enhanced Host Controller#1(rev 04)\x0d\x0a00:1f.0 ISA bridge: Intel Corporation Panther Point LPC Controller(rev 04)\x0d\x0a00:1f.2 IDE interface: Intel Corporation Panther Point 4 port SATA Controller [IDE mode](rev 04)#硬盘接口\x0d\x0a00:1f.3 SMBus: Intel Corporation Panther Point SMBus Controller(rev 04)\x0d\x0a00:1f.5 IDE interface: Intel Corporation Panther Point 2 port SATA Controller [IDE mode](rev 04)#硬盘接口\x0d\x0a02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller(rev 06)#网卡\x0d\x0a03:00.0 PCI bridge: Integrated Technology Express, Inc. Device 8893(rev 41)\x0d\x0a如果要更详细的信息:lspci-v或者 lspci-vv\x0d\x0a如果要看设备树:lscpi-t\x0d\x0a \x0d\x0a查看bios信息\x0d\x0a# dmidecode-t bios\x0d\x0a......\x0d\x0aBIOS Information\x0d\x0a Vendor: American Megatrends Inc.\x0d\x0a Version: 4.6.5\x0d\x0a Release Date: 04/25/2012\x0d\x0a.......\x0d\x0a BIOS Revision: 4.6\x0d\x0a......\x0d\x0a dmidecode以一种可读的方式dump出机器的DMI(Desktop Management Interface)信息。这些信息包括了硬件以及BIOS,既可以得到当前的配置,也可以得到系统支持的最大配置,比如说支持的最大内存数等。\x0d\x0a如果要查看所有有用信息\x0d\x0a dmidecode-q\x0d\x0a以上是linux查看硬件信息的所有命令,可以查看CPU、硬盘、网卡、磁盘等硬件的信息。

linux线程优先级数字越大越高

linux内核线程怎么设置优先级?

Linux内核的三种调度策略:

1,SCHED_OTHER分时调度策略,

2,SCHED_FIFO实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃

3,SCHED_RR实时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平Linux线程优先级设置首先,可以通过以下两个函数来获得线程可以设置的最高和最低优先级,函数中的策略即上述三种策略的宏定义:intsched_get_priority_max(intpolicy);intsched_get_priority_min(intpolicy);SCHED_OTHER是不支持优先级使用的,而SCHED_FIFO和SCHED_RR支持优先级的使用,他们分别为1和99,数值越大优先级越高。设置和获取优先级通过以下两个函数:intpthread_attr_setschedparam(pthread_attr_t*attr,conststructsched_param*param);intpthread_attr_getschedparam(constpthread_attr_t*attr,structsched_param*param);例如以下代码创建了一个优先级为10的线程:structsched_param{int__sched_priority;//所要设定的线程优先级};例:创建优先级为10的线程pthread_attr_tattr;structsched_paramparam;pthread_attr_init(attr);pthread_attr_setschedpolicy(attr,SCHED_RR);param.sched_priority=10;pthread_attr_setschedparam(attr,?m);pthread_create(xxx,attr,xxx,xxx);pthread_attr_destroy(attr);

cpu多线程和jvm多线程?

一cpu个数、核数、线程数的关系

cpu个数:是指物理上,也及硬件上的核心数;

核数:是逻辑上的,简单理解为逻辑上模拟出的核心数;一个CPU核心数模拟出2线程的CPU

线程数:是同一时刻设备能并行执行的程序个数,线程数=cpu个数*核数,及程数=cpu个数(2)*核数(2)=4

Windows:wmic然后物理CPU数“cpugetNumberOfCores”,CPU核心数“cpugetNumberOfLogicalProcessors”

Linux:

查看CPU个数cat/proc/cpuinfo|grepphysicalid|sort|uniq|wc-l

查看核数cat/proc/cpuinfo|grepcpucores|uniq

二cpu线程数和Java多线程

(1)线程是CPU级别的,单个线程同时只能在单个cpu线程中执行

(2)Java多线程并不是由于cpu线程数为多个才称为多线程,当Java线程数大于cpu线程数,操作系统使用时间片机制,采用线程调度算法,频繁的进行线程切换。

(3)线程是操作系统最小的调度单位,进程是资源(比如:内存)分配的最小单位

(4)Java中的所有线程在JVM进程中,CPU调度的是进程中的线程

线程的调度是指按照特定的机制为多个线程分配CPU的使用权。有两种调度模型:分时调度模型和抢占式调度模型

分时调度模型是指让所有线程轮流获得CPU的使用权,并且平均分配每个线程占用CPU的时间片。

Java虚拟机采用抢占式调度模型,是指优先让可运行池中处于就绪态的线程中优先级高的占用CPU,如果可运行池中线程的优先级相同,那么就随机选择一个线程,使其占用CPU,处于运行状态的线程会一直执行,直至它不得不放弃CPU,一个线程会因为以下原因放弃CPU:

(1)Java虚拟机让当前线程暂时放弃CPU,转到就绪态,使其他线程获得运行机会

(2)当前线程因为某些原因而处于阻塞状态

(3)线程运行结束

Java线程让步:

3.Thread.yield()方法

就是说当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉,让自己或者其它的线程运行,注意是让自己或者其他线程运行(根据CPU的调度),并不是单纯的让给其他线程。

4.等待其他线程结束:join()

当前运行的线程可以调用另一个线程的join()方法,当前运行的线程将转到阻塞状态,直至另一个线程运行结束,它才会恢复运行(阻塞恢复到就绪)

什么是线程调度器(ThreadScheduler)和时间分片(TimeSlicing)?

线程调度器是一个操作系统服务,它负责为Runnable状态的线程分配CPU时间。一旦创建一个线程并启动它,它的执行便依赖于线程调度器的实现。

时间分片是指将可用的CPU时间分配给可用的Runnable线程的过程。分配CPU时间可以基于线程优先级或者线程等待的时间。

线程调度并不受到Java虚拟机控制,所以由应用程序来控制它是更好的选择(也就是说不要让的程序依赖于线程的优先级)。

rtos和linux区别?

区别就是两者意思是不一样具体的不同如下

rtos是实时操作系统

RTOS(Real-TimeOperatingSystem),实时操作系统。

Linux是一种自由和开放源码的类Unix操作系统。目前存在着许多不同的Linux,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式计算机、大型机

阅读剩余
THE END