linuxcpu以太坊
Ⅰ linux下怎樣將線程分配到指定CPU
大概的介紹一下Linux 的指定CPU運行,包括進程和線程。linux下的top命令是可以查看當前的cpu的運行狀態,按1可以查看系統有多少個CPU,以及每個CPU的運行狀態。
可是如何查看線程的CPU呢?top
-Hp pid,pid就是你當前程序的進程號,如果是多線程的話,是可以查看進程內所有線程的CPU和內存使用情況。
pstree可以查看主次線程,同樣的pstree -p pid。可以查看進程的線程情況。
taskset這個其實才是重點,可以查看以及設置當前進程或線程運行的CPU(設置親和力)。
taskset -pc pid,查看當前進程的cpu,當然有的時候不只是一個,taskset -pc cpu_num pid ,cpu_num就是設置的cpu。
這樣的話基本的命令和操作其實大家都知道了,接下來就是在代碼中完成這些操作,並通過命令去驗證代碼的成功率。
進程制定CPU運行:
[cpp] view plain
#include<stdlib.h>
#include<stdio.h>
#include<sys/types.h>
#include<sys/sysinfo.h>
#include<unistd.h>
#define __USE_GNU
#include<sched.h>
#include<ctype.h>
#include<string.h>
int main(int argc, char* argv[])
{
//sysconf獲取有幾個CPU
int num = sysconf(_SC_NPROCESSORS_CONF);
int created_thread = 0;
int myid;
int i;
int j = 0;
//原理其實很簡單,就是通過cpu_set_t進行位與操作
cpu_set_t mask;
cpu_set_t get;
if (argc != 2)
{
printf("usage : ./cpu num\n");
exit(1);
}
myid = atoi(argv[1]);
printf("system has %i processor(s). \n", num);
//先進行清空,然後設置掩碼
CPU_ZERO(&mask);
CPU_SET(myid, &mask);
//設置進程的親和力
if (sched_setaffinity(0, sizeof(mask), &mask) == -1)
{
printf("warning: could not set CPU affinity, continuing...\n");
}
while (1)
{
CPU_ZERO(&get);
//獲取當前進程的親和力
if (sched_getaffinity(0, sizeof(get), &get) == -1)
{
printf("warning: cound not get cpu affinity, continuing...\n");
}
for (i = 0; i < num; i++)
{
if (CPU_ISSET(i, &get))
{
printf("this process %d is running processor : %d\n",getpid(), i);
}
}
}
return 0;
}
進程設置CPU運行,其實只能是單線程。多線程設定CPU如下:
[cpp] view plain
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <pthread.h>
#include <sched.h>
void *myfun(void *arg)
{
cpu_set_t mask;
cpu_set_t get;
char buf[256];
int i;
int j;
//同樣的先去獲取CPU的個數
int num = sysconf(_SC_NPROCESSORS_CONF);
printf("system has %d processor(s)\n", num);
for (i = 0; i < num; i++) {
CPU_ZERO(&mask);
CPU_SET(i, &mask);
//這個其實和設置進程的親和力基本是一樣的
if (pthread_setaffinity_np(pthread_self(), sizeof(mask), &mask) < 0) {
fprintf(stderr, "set thread affinity failed\n");
}
CPU_ZERO(&get);
if (pthread_getaffinity_np(pthread_self(), sizeof(get), &get) < 0) {
fprintf(stderr, "get thread affinity failed\n");
}
for (j = 0; j < num; j++)
{
if (CPU_ISSET(j, &get))
{
printf("thread %d is running in processor %d\n", (int)pthread_self(), j);
}
}
j = 0;
while (j++ < 100000000) {
memset(buf, 0, sizeof(buf));
}
}
pthread_exit(NULL);
}
int main(int argc, char *argv[])
{
pthread_t tid;
if (pthread_create(&tid, NULL, (void *)myfun, NULL) != 0)
{
fprintf(stderr, "thread create failed\n");
return -1;
}
pthread_join(tid, NULL);
return 0;
}
Ⅱ linux 怎麼把cpu跑80
來個快速上到100的
for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done
說明:
cat /proc/cpuinfo |grep "physical id" | wc -l 可以獲得CPU的個數,我們將其表示為N.
seq 1 N 用來生成1到N之間的數字
for i in `seq 1 N`; 就是循環執行命令,從1到N
dd if=/dev/zero of=/dev/null 執行dd命令,輸出到/dev/null, 實際上只佔用CPU,沒有IO操作.
由於連續執行N個(N是CPU個數)的dd 命令, 且使用率為100%,這時調度器會調度每個dd命令在不同的CPU上處理.
最終就實現所有CPU佔用率100%
免費提供最新Linux技術教程書籍,入門自學書籍《linux就該這么學》,為開源技術愛好者努力做得更多更好
Ⅲ 為什麼linux CPU使用率超過100%,如圖:紅框所示,加起來已經為103%了,系統CPU是多內核的。
和睿頻沒有關系。。。
Linux 的CPU佔用率是按照單核心計算的,如果該進程支持多線程,就可以佔用多個核心,單個進程超過100%也是很正常的事。但如果伺服器本身沒什麼負載,單進程或很多進程CPU佔用率超過100%就需要查看原因了。圖中的情況看起來並沒有太大問題,而且你抹去了進程命令信息。
Ⅳ linux系統怎麼挖以太坊
如何使用Linux系統挖礦,要使用到哈魚礦工的服務,只需要兩步,就可以在Linux系統上挖礦。
打開 網站,輸入手機號,選擇你要使用多少CPU來挖礦,默認為使用50%的CPU進行挖礦,點擊生成你的專屬命令並復制
只需要兩步,你就可以在Linux系統上挖礦,你所挖的錢只需要到哈魚礦工網站上,輸入你的手機號即可提現。
Ⅳ linux下cpu利用率計算公式
用sar命令
sar
-u
60
5
每60秒采樣一次,連續采樣5次,觀察CPU
的使用情況
%usr:CPU處在用戶模式下的時間百分比。
%sys:CPU處在系統模式下的時間百分比。
%wio:CPU等待輸入輸出完成時間的百分比。
%idle:CPU空閑時間百分比。
Ⅵ linux能在各種cpu上運行!
CPU不是為windows研製的。CPU要往外賣也不只限於為了PC平台。一個CPU架構研製成功可以衍生出很多子版本,用在不同硬體中,它們並不都有win。CPU要往外賣,前提是這個CPU硬體是兼容現代操作系統,Linux是其中之一。
否則沒有軟體能在上面跑,誰還買你的CPU?
公布的細節只限於跟操作系統相關的部分,指令集本身就必須公開的。這個如果它不公開那CPU上就沒操作系統能跑了,要它就沒用了。
Linux只是一個內核平台。arm測試處理器時自己也需要一個可以運行的平台。所以它本身的開發人員也會移植linux。
win 為何不主動兼容其他處理器呢?因為微軟要賣自己的硬體,同時要賣自己的軟體。它的系統是用來賣的。技術界吃微軟虧吃多了。linux 是大家都能用的。 試想買一台電腦 必須買某個人的軟體,那麼那個賣軟體的人是不是就擁有隨意提價優勢呢?以前大家都吃微軟的虧,大家都努力兼容微軟系統,搞到最後都求微軟高抬貴手。 當下企業戰略就是系統要獨立,最好的候選者也就是Linux。
Ⅶ 如何在Linux上得到CPU的工作速度
對於多核的cpu
usleep 之後可能你的程序被遷移到另外一個cpu核心
你或許看看是否可以把你的程序綁定某個cpu核心
或者多比較幾次,如果前後2次不在一個核上,就重新計算
cat /proc/cpuinfo 得到的肯定是正確的,延時直接用usleep 應該比你自己實現的好
如果內核使用了CPU Frequency scaling,有可能主頻是會動態改變的。
Ⅷ 挖以太坊需要什麼cpu
挖礦不需要很好的cpu吧?cpu演算法挖礦太低了,挖礦主要是用顯卡挖的
Ⅸ linux下如何看有幾個cpu
cat /proc/cpuinfo中的信息
processor 邏輯處理器的id。
physical id 物理封裝的處理器的id。
core id 每個核心的id。
cpu cores 位於相同物理封裝的處理器中的內核數量。
siblings 位於相同物理封裝的處理器中的邏輯處理器的數量。
1 查看物理CPU的個數
#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc –l
2、 查看邏輯CPU的個數
#cat /proc/cpuinfo |grep "processor"|wc –l
3、 查看CPU是幾核
#cat /proc/cpuinfo |grep "cores"|uniq
4、 查看CPU的主頻
#cat /proc/cpuinfo |grep MHz|uniq
5、 # uname -a
6、 Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux
(查看當前操作系統內核信息)
7、 # cat /etc/issue | grep Linux
8、 Red Hat Enterprise Linux AS release 4 (Nahant Update 5(查看當前操作系統發行版信息)
9、 # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
(看到有8個邏輯CPU, 也知道了CPU型號)
9 # cat /proc/cpuinfo | grep physical | uniq -c
4 physical id : 0
4 physical id : 1
(說明實際上是兩顆4核的CPU)
10、# getconf LONG_BIT
32
(說明當前CPU運行在32bit模式下, 但不代表CPU不支持64bit)
11、# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc –l
8(結果大於0, 說明支持64bit計算. lm指long mode, 支持lm則是64bit)
12、如何獲得CPU的詳細信息:
linux命令:cat /proc/cpuinfo
13、用命令判斷幾個物理CPU,幾個核等:
邏輯CPU個數:
# cat /proc/cpuinfo | grep "processor" | wc -l
物理CPU個數:
# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
14、每個物理CPU中Core的個數:
# cat /proc/cpuinfo | grep "cpu cores" | wc -l
15、是否為超線程?如果有兩個邏輯CPU具有相同的」core id」,那麼超線程是打開的。每個物理CPU中邏輯CPU(可能是core, threads或both)的個數:
# cat /proc/cpuinfo | grep "siblings"
1.查看CPU信息命令
cat /proc/cpuinfo
2.查看內存信息命令
cat /proc/meminfo
3.查看硬碟信息命令
fdisk -l
查看CPU信息(型號)
# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
(看到有8個邏輯CPU, 也知道了CPU型號)
# cat /proc/cpuinfo | grep physical | uniq -c
4 physical id : 0
4 physical id : 1
(說明實際上是兩顆4核的CPU)
PS:Jay added on 10th, May, 2011
# 其實是可能有超線程HT技術,不一定是有4核,也可能是2核4線程;當時還理解不清楚
# getconf LONG_BIT
32
(說明當前CPU運行在32bit模式下, 但不代表CPU不支持64bit)
# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
8
(結果大於0, 說明支持64bit計算. lm指long mode, 支持lm則是64bit)
再完整看cpu詳細信息, 不過大部分我們都不關心而已.
# dmidecode | grep 'Processor Information'
查看內 存信息
# cat /proc/meminfo
# uname -a
Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux
(查看當前操作系統內核信息)
# cat /etc/issue | grep Linux
Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
(查看當前操作系統發行版信息)
查看機器型號
# dmidecode | grep "Proct Name"
查看網卡信息
# dmesg | grep -i eth