1. 程式人生 > >通過任務名字列印任務的親和性

通過任務名字列印任務的親和性

  有時候我們除錯系統時,需要在執行過程中檢視某個任務的狀態,如一些任務的cpu親和性。但是我們我們只知道要監控的任務的名字,任務的pid是動態分配的。

     下面這個程式就是在c中通過popen()執行一段shell程式以通過任務名字找到對應的PID,然後再根據PID檢視任務的cpu親和性:

​

#include <string.h>  
#include <sys/types.h>  
#define __USE_GNU
#include <sched.h>
#include<sys/sysinfo.h>
#include <unistd.h>
#define PS_COMMAND "ps aux | grep %s | grep -v grep| awk \'{print $1}\'"
int getaffinity_by_name(char *name)  
{  
	FILE *fp;  
	char buf[128]={0}, cmd[64];  
	pid_t pid;
 	cpu_set_t cpuset;
	int i = 0, num = sysconf(_SC_NPROCESSORS_CONF);
	unsigned long long cpumask = 0;

	sprintf(cmd, PS_COMMAND, name);
 	printf(" cmd=[%s]\n", cmd);
	if ((fp = popen(cmd, "r")) == NULL)  
		return -1;  

	if(!fgets(buf, sizeof(buf), fp))
		return -1;
	fclose(fp);
	pid = strtol(buf, 0, 10);

	if (pid != 0) {
		cpumask = getaffinity_by_tid(pid);
		printf(" %s's cpumask is 0x%llx\n", name, cpumask);
		return 0;	
   	 } else {
		printf(" strtol(%s) invalid\n", buf);
		return -1;
	}
}
int getaffinity_by_tid(pid_t pid)
{
	int i;
	cpu_set_t cpuset;
	unsigned long long cpumask = 0;
	int i = 0, num = sysconf(_SC_NPROCESSORS_CONF);

	if (pid != 0) {
		CPU_ZERO(&cpuset);
		sched_getaffinity(pid, sizeof(cpuset), &cpuset);
		for (i = 0; i < num; i++){
			if (CPU_ISSET(i, &cpuset))
				cpumask |= 1 << i;
		}
	 }
	 return cpumask;
}

[Click and drag to move]
​

相關推薦

通過任務名字列印任務親和

  有時候我們除錯系統時,需要在執行過程中檢視某個任務的狀態,如一些任務的cpu親和性。但是我們我們只知道要監控的任務的名字,任務的pid是動態分配的。      下面這個程式就是在c中通過popen()執行一段shell程式以通過任務名字找到對應的PID,然後再根據PID

Linux任務計劃、周期任務執行

linux任務計劃、周期性任務執行 crontab概論未來的某時間點執行一次某任務:at, batch 周期性運行某任務:crontab 執行結果:會通過郵件發送給用戶 查看郵箱服務是否開啟:(25端口) ~]# netstat -tnlp ~]# ss -tnl本地電子郵件服務:smtp:simple m

【Linux相識相知】任務計劃和周期任務

open fonts 同時 不存在 runt 逗號 內容 bsp 事情 在我們的生活中,有的工作是例行的,例如每年一次加薪、每年給女朋友過一次生日、每天上班都要打卡等,有的工作是臨時發生的,例如明天朋友要來訪,你需要準備午餐等等。 像很多例行的工作,你一旦忙起來就很容易忘

Linux 任務計劃,周期任務執行之基本概念

Linux任務計算、周期性任務執行的簡單未來的某時間點執行一次某任務的命令有at、batch周期性運行某任務的命令是crontab這些命令的執行結果會通過郵件發送給用戶SMTP這個協議只能發送郵件POP3或者IMAP4才是將郵件從郵件服務器中取出的協議MUAMail User Agent 用戶收發郵件的工具程

Linux任務計劃、周期任務執行之本地電子郵件服務/mailx

Linux 任務計劃 周期性任務執行簡單操作 Linux系統內部有個郵件服務功能/var/spool/mailCentOS6、7默認是開啟郵件服務的-s 指定郵件主題-a file_name 添加附件-r 指定郵件來源-u 指定郵件目的Hello world是郵件的主題 這個郵件是發給root的。 E

Linux任務計劃、周期任務執行之cron/crontab

Linux crontab的簡單操作周期性任務計劃需要一個程序包,不間斷的監視時間。CentOS7需要主程序包:cronie(提供crond守護進程及相關輔助工具)周期性任務計劃工作首先需要確保crond守護進程正產運行crond需要使用專用的配置文件,此文件有固定的格式,不建議使用文本編輯器直接編輯此文件,

Linux任務計劃、周期任務執行之at

Linux at任務計劃的簡單操作-m 如果任務完成,發送郵件給預定用戶 這個是默認選項-M 不發送郵件給預定用戶-f 從文件中讀取命令-t 指定執行時間 [CCYY]MMDDhhmm[.ss] 默認格式是HH:MM[YYYY-mm-dd]現在有兩個任務等著被執行 at -l 也可以查看預定任務現在只剩

java SSM框架 編寫的通過WEB控制 定時任務

頁面 log logs com quartz 通過 file 下載鏈接 cnblogs java SSM框架 編寫的通過WEB控制 定時任務 沒有頁面 只有完整的java後臺代碼 下載鏈接 :https://files.cnblogs.com/files/

在Java應用中通過SparkLauncher啟動Spark任務

本部落格內容基於Spark2.2版本,在閱讀文章並想實際操作前,請確保你有: 一臺配置好Spark和yarn的伺服器 支援正常spark-submit --master yarn xxxx的任務提交 老版本 老版本任務提交是基於啟動本地程序,執行指令碼spark-submit xxx **

IMM服務(智慧媒體管理)通過Notify查詢非同步任務的執行結果

IMM服務(智慧媒體管理)通過Notify查詢非同步任務的執行結果 在使用智慧媒體管理的過程中,我們可能碰到一些大的文件的轉換,當我們需要知道結果的時候,一直輪詢 GetOfficeConversionTask介面去獲取任務狀態其實是浪費時間的。其實IMM服務提供任務結果非同步反向通知的功能,今天我們就使用

Django中通過celery完成非同步任務

開發環境: Django:1.11 專案佈局 安裝 celery: pip install celery 非同步任務模組 celery_tasks; 非同步任務: sms (傳送簡訊); config: celery非同步任務的配置(這裡是用來指名非同步任務儲存的位置)

通過windows伺服器定時任務,定時備份mysql資料庫。

為了防止伺服器宕機,導致mysql資料庫損壞無法修復,所以每天定時進行備份。一旦有問題直接還原資料庫! 50多個G的資料庫備份完成sql大概在20G,通過壓縮後大概在2G左右。 長時間進行後硬碟吃不消。所以做了一個定時清理備份檔案的指令碼。 點此進入下一篇文章->精簡mysql

caffe,資料輸入層,分類資料label是圖片名字加上一個值,對於迴歸任務或者其他任務,標籤是一組值(一個向量)用hdf5

引言 如果關注Kaggle 機器學習專案的同學,一定很熟悉人臉關鍵點檢測這個任務,在2013 年的時候,ICML舉辦一個的challgene,現在放在kaggle 上作為 一種最常規kaggle入門任務而存在。 本文的主要目的在於驗證深度學習模型在人臉點檢測效果,踩踩裡面的坑。 任務介紹 人臉關鍵點檢測,也

hive on spark通過YARN-client提交任務不成功

在Hive on spark中  設定spark.master 為 yarn-client , 提交HiveQL任務到yarn上執行,發現任務無法執行 輸出一下錯誤: 可以看到 Hive on S

Spark通過Jar包提交任務

Standalone需要通過bin/spark-submit來提交必需引數 --class --master舉例如下:/home/bigdata/hadoop/spark-2.1.1-bin-hadoop2.7/bin/spark-submit \ --class org.a

Spark通過Java Web提交任務

相關軟體版本: Spark1.4.1 ,Hadoop2.6,Scala2.10.5 , MyEclipse2014,intelliJ IDEA14,JDK1.8,Tomcat7 機器: windows7 (包含JDK1.8,MyEclipse2014,I

VARCHART XGantt .NET的最佳實踐:通過表互動式交換任務

VARCHART XGantt是一款功能強大的甘特圖控制元件,其模組化的設計讓您可以建立滿足需要的應用程式。XGantt可用於.NET,ActiveX和ASP.NET應用程式,可以快速、簡單地整合到您的應用程式中,幫助您識別效能瓶頸、避免延遲以及高效利用資源,使複雜資料變得更加容易理解。

windows,印表機無列印任務,仍不斷列印

   前幾天碰到一個怪異事件,公司有個網路印表機一直打亂碼,拔了網線就不打,一插起又打,一臺一臺看了所有的PC都沒找到有列印任務,最後通過網路抓包,發現是其中一臺PC發過來的,又在這個PC上看,還是沒有列印任務,停止列印服務,重啟,都不能解決。    最後還是度娘解決所有問

FreeRTOS 除錯--列印任務執行情況

FreeRTOS 除錯–列印任務執行情況 官方API函式中有兩個函式可以提供任務的一些情況,一個是: void vTaskList( char * pcWriteBuffer ) 第二個是: void vTaskGetRunTimeStats( char *pcWriteBuf