Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2005-09-01 20:36:01

  Artanis - Użytkownik

Artanis
Użytkownik
Skąd: KatoVice City
Zarejestrowany: 2005-08-17

Limit zużycia procesora

Zauważyłem ostatnio (głównie podczas mizernych prób kompilacji kernela), że przy maksymalnym zużyciu procesora w krótkim czasie zawiesza mi sie komp. Nie ma co szukać winy w Linuchu, procek jest jakiś lewy i poprostu staje w miejscu, dlatego chciałbym nałożyć na system ograniczenie by nie korzystał więcej niż z powiedzmy 60% mocy procesora, jak to zrobić ? :]


LRU#375319

[Sempron 2800@(300x8)] [1024 MB DDR 400Mhz Elixir] [EPoX 8KDA] [GF66 GT 128 MB DDR3]
[Gentoo ~x86 2.6.20-morph6] [nV 97xx] [KDE3.5.6] [gcc 4.1.2]

Offline

 

#2  2005-09-01 20:40:13

  BiExi - matka przelozona

BiExi
matka przelozona
Skąd: Gorlice
Zarejestrowany: 2004-04-16
Serwis

Re: Limit zużycia procesora

przejzyj plik

/etc/security/limits.conf

Offline

 

#3  2005-09-01 22:21:46

  Artanis - Użytkownik

Artanis
Użytkownik
Skąd: KatoVice City
Zarejestrowany: 2005-08-17

Re: Limit zużycia procesora

#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes

#        - as - address space limit
#        - maxlogins - max number of logins for this user
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold

No tylko problem jest taki, że kompilacja to jeden proces choć uciażliwy i chyba nie kwalifikuje sie do żadnej z reguł.


LRU#375319

[Sempron 2800@(300x8)] [1024 MB DDR 400Mhz Elixir] [EPoX 8KDA] [GF66 GT 128 MB DDR3]
[Gentoo ~x86 2.6.20-morph6] [nV 97xx] [KDE3.5.6] [gcc 4.1.2]

Offline

 

#4  2005-09-01 22:45:50

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: Limit zużycia procesora

#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes

#        - as - address space limit
#        - maxlogins - max number of logins for this user
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold

No tylko problem jest taki, że kompilacja to jeden proces choć uciażliwy i chyba nie kwalifikuje sie do żadnej z reguł.

Plik przyznaje określony limit dla danego użytkownika, każdy proces ma właściciela, działa na prawach użytkownika, który go wywołał. Jesli utowrzysz użytkownika np. compiler i przyznasz mu np. 60 % czasu proca, a następnie będziesz kompilował z konta tego użytkownika, to porces gcc nie powinien dostać więcej jak 60% czasu proca. Tak to rozumiem na podstawie lektury w/w pliku.


http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

#5  2005-09-01 23:18:19

  rychu - elektryk dyżurny

rychu
elektryk dyżurny
Skąd: gdańsk/kalmar
Zarejestrowany: 2004-12-28

Re: Limit zużycia procesora

Zauważyłem ostatnio (głównie podczas mizernych prób kompilacji kernela), że przy maksymalnym zużyciu procesora w krótkim czasie zawiesza mi sie komp.

mi się to kojaży z:

Kod:

Processor type and features -->
[*] Machine Check Exception

w każdym razie stary podkręcony celek się wywalał, jeśli się skompilowało jądro z tą opcją


linux regd. user #248790

Offline

 

#6  2005-09-02 10:44:28

  Mick - Członek DUG

Mick
Członek DUG
Skąd: Oleśnica/Wrocław
Zarejestrowany: 2004-04-26
Serwis

Re: Limit zużycia procesora

Nie głupi temat. Standardowo lepiej sobie radzi z prockiem windows. Podczas nagrywania płyty zazwyczaj jest duże obcążenie komputera. W windowsie mogę bez problemu włączyć sobie przeglądarkę i przeglądać strony. W linuxie moga przeglądać ale jeśli była wcześniej właczona przeglądarka. Tak więc muszą być jakieś narzędzia które automatycznie będą dbały o komfort pracy bo ustawianie na sztywno dola kompilacji dla nagrywania troszkę męczące.

Offline

 

#7  2005-09-02 13:45:21

  Artanis - Użytkownik

Artanis
Użytkownik
Skąd: KatoVice City
Zarejestrowany: 2005-08-17

Re: Limit zużycia procesora


#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes

Plik przyznaje określony limit dla danego użytkownika, każdy proces ma właściciela, działa na prawach użytkownika, który go wywołał. Jesli utowrzysz użytkownika np. compiler i przyznasz mu np. 60 % czasu proca, a następnie będziesz kompilował z konta tego użytkownika, to porces gcc nie powinien dostać więcej jak 60% czasu proca. Tak to rozumiem na podstawie lektury w/w pliku.

No oki, to łapie, tylko jeszcze jednostka, (MIN) kojaży mi sie z minutami :D

w każdym razie stary podkręcony celek się wywalał, jeśli się skompilowało jądro z tą opcją

No wlaśnie mam starego podkręconego Cellka 666@800 :] Tylko, że na Fedorze mogłem spokojnie kompilować jajka i nie było zawiech :/


LRU#375319

[Sempron 2800@(300x8)] [1024 MB DDR 400Mhz Elixir] [EPoX 8KDA] [GF66 GT 128 MB DDR3]
[Gentoo ~x86 2.6.20-morph6] [nV 97xx] [KDE3.5.6] [gcc 4.1.2]

Offline

 

#8  2005-09-02 15:42:01

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: Limit zużycia procesora


#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes

Plik przyznaje określony limit dla danego użytkownika, każdy proces ma właściciela, działa na prawach użytkownika, który go wywołał. Jesli utowrzysz użytkownika np. compiler i przyznasz mu np. 60 % czasu proca, a następnie będziesz kompilował z konta tego użytkownika, to porces gcc nie powinien dostać więcej jak 60% czasu proca. Tak to rozumiem na podstawie lektury w/w pliku.

No oki, to łapie, tylko jeszcze jednostka, (MIN) kojaży mi sie z minutami :D

Racja, to są minuty. Rozpędziłem sie. Znalazłem dokładniejszy opis, dotyczący nie tylko limits.conf. Jest tam co nieco informacji.
http://www.seifried.org/lasg/users/
i coś takiego:
http://setiathome.berkeley.edu/forum_thread.php?id=15977


http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

#9  2005-09-14 18:42:27

  Artanis - Użytkownik

Artanis
Użytkownik
Skąd: KatoVice City
Zarejestrowany: 2005-08-17

Re: Limit zużycia procesora

Huh, troche to bylo toporne; Po primo /etc/security/limits.conf -> CPU max time ogranicza czas zycia procesu, co jedynie moze mi zabezpieczyc kompa przed ewentualna zawiecha, jednak zadania nie wykona.
Secundo, progs, udalo mi sie go skompilowac i zasadniczo spelnia swoje zadanie, chcialbym jednak, aby kazdy nowouruchamiany proces mial na siebie nalozony limit. Cos mi sie zdaje, ze tu trzeba by pogrzebac w konfigu shella, ale nie doszedlem jeszcze tak wysoko w drzewku umiejetnosci. Inna koncepcja bylo by wlepienie progsa do kernela, ale dla mnie to juz jest kompletny kosmos :D


Ponizej listing poprawionego kodu progsa do limitow :)


Kod:

//cpulimit.c
/**
* Simple program to limit the cpu usage of a process
*
* Author: Angelo Marletta (marlonx80@hotmail.com)
*/

#include  <stdio.h>
#include  <stdlib.h>
#include  <time.h>
#include  <sys/time.h>
#include  <unistd.h>
#include  <sys/types.h>
#include  <signal.h>
#include  <sys/resource.h>

//pid of the controlled process
int pid;

//SIGINT signal handler
void quit(int sig) {
    //let the process continue if it's stopped
    kill(pid,SIGCONT);
    exit(0);
}

int main(int argc, char **argv) {

    if (argc!=3) {
        fprintf(stderr,"Usage: %s {pid} {max cpu percentage}n",argv[0]);
        exit(1);
    }
    pid=atoi(argv[1]);
    int limit=atoi(argv[2]);
    if (limit>100) {
        fprintf(stderr,"limit must be in the range 0-100n");
        exit(1);
    }
    //if possible renice this process, so it has more responsiveness
    if (setpriority(PRIO_PROCESS,getpid(),-20)!=0) {
        printf("Warning: cannot renice.nTo work better you should run this program as root.n");
    }
    signal(SIGINT,quit);

    //time quantum in microseconds
    int period=100000;
    struct timespec twork,tsleep; //time to work, and time to sleep
    twork.tv_sec=0;
    twork.tv_nsec=period*limit*10;
    tsleep.tv_sec=0;
    tsleep.tv_nsec=period*(100-limit)*10;

    while(1) {
        if (kill(pid,SIGSTOP)!=0) break;
        nanosleep(&tsleep,NULL);
        if (kill(pid,SIGCONT)!=0) break;
        nanosleep(&twork,NULL);
    }

    perror("kill()");
    exit(1);
}

PS. sorka za brak polonek, ale spierniczyl mi sie uklad klawiatury w Debianie i jeszcze nie doszedlem do tego jak to naprawic :)


LRU#375319

[Sempron 2800@(300x8)] [1024 MB DDR 400Mhz Elixir] [EPoX 8KDA] [GF66 GT 128 MB DDR3]
[Gentoo ~x86 2.6.20-morph6] [nV 97xx] [KDE3.5.6] [gcc 4.1.2]

Offline

 

#10  2005-09-15 04:02:25

  rychu - elektryk dyżurny

rychu
elektryk dyżurny
Skąd: gdańsk/kalmar
Zarejestrowany: 2004-12-28

Re: Limit zużycia procesora

śmieszne takie kopanie z drugiej strony :)

artanis, po prostu przekompiluj sobie jądro. jak zapodasz make menuconfig, to w 'Processor type and features -->' odznacz 'Machine Check Exception'. ma być wyłączone! i teraz jazda z kompilacją

Standardowo lepiej sobie radzi z prockiem windows.

chyba jaja sobie robisz? wspaniały XP na starym celku 333@400 co chwila walił resetem, ni z tego ni z owego. a linuksik (oczywiście skompilowany z tą opcją wyżej) śmiga aż miło ^^


linux regd. user #248790

Offline

 

#11  2007-01-28 10:13:30

  mons - Użytkownik

mons
Użytkownik
Zarejestrowany: 2006-06-01

Re: Limit zużycia procesora

Odgrzeję stary temat. Na którejś stronie z których codziennie odwiedzam, umieszczono kilka porad odnośnie konsoli, a właściwie czyiś artykulik:
Efektywna praca z konsolą w Linuksie
Najbardziej interesujący do tego tematu jest ostatni punkt:

5. Cpulimit – uspokój swój procesor


Ostatnie miejsce – jednak nie mniej funkcjonalne niż poprzednie. Cpulimit pozwala nam na przyporządkowywanie danemu procesowi odpowiedniego, maksymalnego obciążenia procesora, które może ten proces wygenerować. Nad funkcjonalnością tego rozwiązania nie będę się rozwodził.

sudo apt-get install cpulimit

Tutaj już odsyłam do helpa samego programu.

Szkoda tylko że nie ma jakiegoś pliku w etc który na sztywno ustawiałby dany proces. W ten sposób na stałe przypożądkować by można dane procesy.

Strona projektu: http://cpulimit.sourceforge.net/

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)