Article View: pl.comp.os.linux.programowanie
Article #72662Optymalizacja zużycia zasobów systemowych
From: Andrzej Niedworok
Date: Sun, 22 Sep 2013 16:18
Date: Sun, 22 Sep 2013 16:18
70 lines
3496 bytes
3496 bytes
Witajcie,
mam pewien problem z prostą aplikacją napisaną na płytkę Raspberry Pi. Aplikacja wyświetla czas i datę na wyświetlaczu alfanumerycznym LCD (2x16 znaków) podłączonym do linii GPIO Raspberry. Obsługę wyświetlacza zrealizowałem przy użyciu biblioteki WiringPi napisanej przez Gordona Drogona (http://wiringpi.com). Wszystko działa bez problemu. Problem pojawił się w momencie gdy po uruchomieniu programu włączyłem podgląd procesów (top lub htop). Okazało się że mój prymitywny program wykorzystuje 50 % CPU. Podejrzewam że problem polega tym że program bez przerwy, w pętli pobiera czas i go wyświetla na LCD. To jest moj pierwszy program na platformę Linux. Do tej pory pisałem programy na mikrokontrolery bez OS'a. Poniżej załączyłem cały kod programu.
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <syslog.h>
#include <unistd.h>
#include <time.h>
#include <wiringPi.h>
#include <lcd.h>
static int lcdHandle;
int main (){
int fval;
struct tm *t;
time_t tim;
char buf[16];
// Fork.
fval = fork ();
if (fval < 0){
syslog (LOG_CRIT, "Bandwidth Fork error");
exit (1);
}
else if (fval > 0){
syslog (LOG_INFO, "Bandwidth Daemonize. Forked child %d", fval);
exit (0);
}
wiringPiSetup () ;
lcdHandle = lcdInit (2, 16, 4, 11, 10, 0, 1, 2, 3, 0, 0, 0, 0);
while (1){
tim = time (NULL);
t = localtime (&tim);
// Prezentacja czasu
sprintf (buf, "%02d:%02d:%02d", t -> tm_hour, t -> tm_min, t -> tm_sec);
lcdPosition (lcdHandle, 0, 0);
lcdPuts (lcdHandle, buf);
// Prezentacja daty
sprintf (buf, "%02d/%02d/%04d", t -> tm_mday, t -> tm_mon + 1, t -> tm_year + 1900) ;
lcdPosition (lcdHandle, 0, 1);
lcdPuts (lcdHandle, buf);
}
return 0;
}
W programie użyłem instrukcji fork() aby uruchomić go w osobnym wątku (aby działał w tle). Czy ktoś mógłby naprowadzić mnie w jaki sposób zoptymalizować działanie programu aby wykorzystywał mniej zasobów?
Pozdrawiam
Andrzej Niedworok
Technical Details
Message-ID:
<1ec42afc-f8b6-4534-ab80-20dc54e22d11@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin.stu.neva.ru!feeder.erje.net!us.feeder.erje.net!usenet.blueworldhosting.com!feeder01.blueworldhosting.com!border4.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.giganews.com!d5no1503870qap.0!news-out.google.com!gv3ni1143qab.0!nntp.google.com!d5no1503866qap.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
X-Received: by 10.224.96.136 with SMTP id h8mr31903qan.8.1379866689780; Sun, 22 Sep 2013 09:18:09 -0700 (PDT) X-Received: by 10.49.48.38 with SMTP id i6mr720777qen.4.1379866689763; Sun, 22 Sep 2013 09:18:09 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin.stu.neva.ru!feeder.erje.net!us.feeder.erje.net!usenet.blueworldhosting.com!feeder01.blueworldhosting.com!border4.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.giganews.com!d5no1503870qap.0!news-out.google.com!gv3ni1143qab.0!nntp.google.com!d5no1503866qap.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.os.linux.programowanie Date: Sun, 22 Sep 2013 09:18:09 -0700 (PDT) Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=31.63.191.155; posting-account=qiLZowoAAAAT9Z-mvjLlpicERAcQcRVi NNTP-Posting-Host: 31.63.191.155 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <1ec42afc-f8b6-4534-ab80-20dc54e22d11@googlegroups.com> Subject: Optymalizacja zużycia zasobów systemowych From: Andrzej Niedworok <niedworok.andrzej@gmail.com> Injection-Date: Sun, 22 Sep 2013 16:18:09 +0000 Lines: 87 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit