SMP

Grzegorz Sójka wujek w yen.ipipan.waw.pl
Sob, 1 Lip 2006, 12:54:41 CEST


No więc powiedzmy, że mamy takiego potwora, który ma wiadro procesorów
(u mnie wszystkie 2) i mamy do wykonania x poleceń shelowskich, gdzie
x>>100. O poleceniach tych wiadomo jedynie, że czas wykonania rozkłada
się losowo i jest z przedziału od 0.01 - 30s. W związku z tym chcieli
byśmy zrobić to tak, żeby wykorzystać moc obliczeniową wszystkich
procesorów. Podzielenie listy poleceń na n równolicznych grup i
odpalenie każdej grupy na innej konsoli nie ma sensu bo jedna maże
wykonać się w 2s a druga ciągnąć przez 0.5h. Co zatem idzie nie
dociążymy wszystkich proców. Potrzebny nam jest task-server. I tu jest
moje pytanie: jest jakiś gotowy soft do takich rzeczy? Coś co na
przykład będzie pobierało kolejne komendy z stdin i jeśli liczba
wykonywanych będzie mniejsza niż ustalone n to będzie uruchamiało
następną. Ja jak na razie napisałem jakiś prosty skrypcik shelowski
który do tego celu stosuje pooling. To jednak przy dużym rozrzucie
czasów wykonania jest bez sens. Jak ustawimy duży odstęp poolingu to
często procki się nudzą a jak mały to znowu shell generuje duże
obciążenie. Ja właśnie wymyśliłem żeby wykorzystać do tego celu "make
-jX". Niestety wymaga to napisanie Makefile. Nigdy tego nie robiłem więc
chciałem też prosić żeby ktoś napisał mi przykładowy. Dla uproszczenia
powiedzmy, że nasze komendy to command-1 ... command-X. Co dalej?

-- 
   ______________Pozdrówka___________
  /    ___  ___  ___  ___    ___
 / _  /__/ ___/ /_   /__  / /_   /_/
/__/ / |  /__  /__  ___/ / /__  / |


Więcej informacji o liście dyskusyjnej pld-users-pl