Raspberry Pi CPU Yükü Hesaplama

Telemetri datası olarak kullanmak için Raspberry Pi CPU Yükü Hesaplama fonksiyonu.

Raspberry pi, işlemci bilgilerini /proc altında stat adında bir belgede tutuyor. Yapılması gereken girip burdan verileri derlemek. Her bir core için ayrı ayrı bilgiler yer alıyor fakat ortalamasını alan bir fonksiyon derledim.

float readCoreUsage() {
	FILE* fp;

	static long last_user, last_nice, last_sys;

	long user, nice, sys;
	char id[16];

	fp = fopen("/proc/stat", "r");

	
	if (fscanf(fp, "%s %ld %ld %ld", id, &last_user, &last_nice, &last_sys) != 4)
	{
		fprintf(stderr, "/proc/stat initial read failed\n");
	}
	
	fclose(fp);
	sleep(1);
	fp = fopen("/proc/stat", "r");

	if (fscanf(fp, "%s %ld %ld %ld", id, &user, &nice, &sys) != 4)
	{
		fprintf(stderr, "/proc/stat read failed\n");
	
	}

	fclose(fp);
	float numberOfCpu = 4.0;
    float core = ((user + nice + sys) - (last_user + last_nice + last_sys)) / numberOfCpu;
	printf("cpu: %.2f%%\n",core);
    return core;
}

Önceki Raspberry pi işlemci sıcaklığı okuma adlı yazıda olduğu gibi stdio,stdlib ve iostream adlı kütüphaneleri çağırmak gerekli.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir