Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: Procesory wielordzeniowe, a linuks.  (Przeczytany 9727 razy)

  • Gość
Procesory wielordzeniowe, a linuks.
« dnia: 2011-11-03, 10:18:02 »
Witam.

Koledzy zastanawia mnie na ile system linuks wykorzystuje wielordzeniowość procesorów. Czy może ktoś się nad tym zastanawiał? W internecie ciężko trochę o takie informacje. Np. uruchomienie systemu z procesorem 4 rdzeniowym 2,3GHz, będzie szybsze w porównaniu z jednordzeniowym 3.6GHz ?

Czy przy normalnej pracy, np. oglaąniu filmu HD, przeglądanie internetu, będzie czuć różnice w prędkości, dzięki dodtakowym rdzeniom?

Pozdrawiam i zapraszam do dyskusji :)

ktr

  • Gość
Procesory wielordzeniowe, a linuks.
« Odpowiedź #1 dnia: 2011-11-03, 10:38:18 »
jeżeli program jest napisany z myślą o kilku rdzeniach to na pewno będzie szybciej ;) kiedyś wyliczałem liczbę pi przy użyciu OpenMP to różnice były znaczne ..
http://openmp.org/wp/ tu możesz sobie o tym trochę poczytać.

  • Gość
Procesory wielordzeniowe, a linuks.
« Odpowiedź #2 dnia: 2011-11-03, 13:02:01 »
Z programem napisanym dla kilku rdzeni sprawa jest oczywista. Jeśli chodzi o sam linux, to na przykład czy przy kompliacji używa jednego rdzenia czy korzysta z dwóch, czy jak uruchomię dwa odtwarzacze, to czy jeden będzie obciążał jeden rdzeń, a drugi - kolejny rdzeń, czy linuks nie jest na tyle inteligenty jeszcze.. :P

rilicek

  • Gość
Procesory wielordzeniowe, a linuks.
« Odpowiedź #3 dnia: 2011-11-03, 13:11:20 »
Zainstaluj jakiś monitor systemowy z podziałem na rdzenie procesora - on prawdę Ci powie.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3056
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Procesory wielordzeniowe, a linuks.
« Odpowiedź #4 dnia: 2011-11-03, 13:40:21 »
1. Jeżeli program jest wielowątkowy (nie musi korzystać z OpenMP ani innych wynalazków), to wykorzysta wiele rdzeni.
2. Jeżeli program NIE jest wielowątkowy, to sam system rozgoni takie programy jako całość po różnych procesorach.

Generalnie "poziom" rozdziału między SMP jest taki
implicit parallel (programy dla Itanium) < block-level parallel (np OpenMP) < Włókna (fiber) < Wątki (thread) < procesy (process).
Od lewej do prawej rosnący rozmiar elementu podlegającego zrównolegleniu.
* W Itanium zrównoleglenie jest na poziomie kodu maszynowego,
* W implementacjach OpenMP zrównoleglenie jest na poziomie bloku programu w języku wysokiego poziomu (np pętla)
* We włóknach zrównoleglenie jest na poziomie funkcji, nie ma wywłaszczenia (co-operative)
* W wątkach zrównoleglenie jest na poziomie funkcji, ale jest wywłaszczenie (preemptive)
* W procesach zrównoleglenie jest na poziomie procesu/programu jako całości.

W niektórych językach wątki realizowane są bez współpracy z systemem operacyjnym (np Ruby 1.8, w 1.9 już są wątki OS-owe). Niektóre języki szczycą się własną implementacją wątków, np ultralekkie wątki w Erlangu umożliwiające równoczesną pracę dziesiątków i setek tysięcy (!) wątków równocześnie - zabiłoby to dowolnie wybrana implementację wątków na bazie OSa.

 Na poziomie wątków jest jeszcze MPP (massive parallel computing) w implementacji typu CUDA, OpenCL -> wątki dystrybuowane na kartę graficzną.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3056
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Procesory wielordzeniowe, a linuks.
« Odpowiedź #5 dnia: 2011-11-03, 13:44:49 »
Cytat: Czarodziej666
czy przy kompliacji używa jednego rdzenia czy korzysta z dwóch
Do make masz magiczny parametr -jN, gdzie N to ilośc równocześnie puszczanych kompilatorów. Ma sens dla programów składających się z wielu plików źródłowych. Przyjmuje się na ogół, że N powinno wynosić P*2+1, gdzie P to liczba procesorów. Dlaczego *2? Bo kompilator nie "zawala" cały czas procesora, często czeka na odczyt źródła i zapis wyniku, więc przy N=P niektóre rdzenie by się obijały. Istotnym parametrem jest też obciążenie systemu (load average), oznaczające mniej-więcej średnią długość kolejki procesów/wątków czekających na przydział procesora. Wartości <<1 oznaczają lenistwo procesora i nieoptymalne obciążenie, wartości >>P generalnie oznaczają przeciążenie.
Zainstaluj sobie htop i popatrz na obciążenie rdzeni i load average przy różnych N. To najlepszy wskaźnik "zadyszki" procka. Trzymaj takie N, aby paski obciążenia procesorów były do końca, ale load average był poniżej P.
Cytat: Czarodziej666
czy jak uruchomię dwa odtwarzacze, to czy jeden będzie obciążał jeden rdzeń, a drugi - kolejny rdzeń, czy linuks nie jest na tyle inteligenty jeszcze.. :P
Tak. Prawdopodobnie tak, bo jeżeli drugi rdzeń będzie zajęty czymś ważniejszym dla systemu, to oba odtwarzacze pójdą na tym samym rdzeniu. Generalnie algorytmy obciążania procesorół w systemach SMP to temat-rzeka, ale Linux ma jedną z lepszych implementacji.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

  • Gość
Procesory wielordzeniowe, a linuks.
« Odpowiedź #6 dnia: 2011-11-03, 15:08:10 »
A ile teraz Linux ( ten najnowszy kernel 3.1 ) potrafi obsłużyc rdzeni?
Vista odpowiednio obsłuży procesor posiadający maksymalnie 8 rdzeni, a Linux potrafi obsłużyć taki z 64'oma rdzeniami czy więcej jest teraz w stanie ?

  • Gość
Procesory wielordzeniowe, a linuks.
« Odpowiedź #7 dnia: 2011-11-03, 16:32:27 »
lares: pierwszy komputer z najnowszego zestawienia Top500 (czerwiec tego roku) ma 548 352 rdzeni i działa pod kontrolą Linuksa.
Czy to rozwiewa Twoje wątpliwości?

Cytat: Czarodziej666
Czy przy normalnej pracy, np. oglaąniu filmu HD, przeglądanie internetu, będzie czuć różnice w prędkości, dzięki dodtakowym rdzeniom?
Nawet jeśli czuć, to minimalne. Normalna praca na komputerze biurkowym jest bardzo mało obciążająca dla procesora. Np. mój cooler przez większość czasu pracuje na najniższych dostępnych obrotach. Dzisiejsze procesory wielordzeniowe mają po prostu ogromne zapasy mocy, z którymi nie mają co robić.

W większości współczesnych komputerów wąskim gardłem jest prędkość odczytu i zapisu na dysku twardym i tutaj należy wprowadzać zmiany, aby zauważyć różnice. Dużo rozsądniejsze od wymiany jednordzeniowego procesora 3,6GHz na dwurdzeniowy 2,3GHz jest wymiana dysku twardego z 5400RPM na 7200RPM.

ra-v

  • Gość
Procesory wielordzeniowe, a linuks.
« Odpowiedź #8 dnia: 2011-11-03, 17:52:24 »
Cytuj
Czarodziej666 napisał: (Pokaż/ukryj)

Czy przy normalnej pracy, np. oglaąniu filmu HD, przeglądanie internetu, będzie czuć różnice w prędkości, dzięki dodtakowym rdzeniom?
Nawet jeśli czuć, to minimalne.
Czuć i to znacznie. Film na YT w 720p chodzi płynnie, w tle chodzi wirtualka Win7 z przeglądarka z flashem, a dodatkowo coś się jeszcze wykonuje. Na 1 rdzeniowym jest przestój, a u mnie na 3-rdzeniowym nie  ma większej róznicy czy robię te czynności osobno czy razem.

Cytuj
Vista odpowiednio obsłuży procesor posiadający maksymalnie 8 rdzeni, a Linux potrafi obsłużyć taki z 64'oma rdzeniami czy więcej jest teraz w stanie ?
Rdzeni czy procesorów? Bo mnie się zdaję że procesorów. XP był wstanie obsłużyć 2 procesory, a przecież chodzą 4-rdzeniówce bez problemu.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3056
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Procesory wielordzeniowe, a linuks.
« Odpowiedź #9 dnia: 2011-11-03, 22:43:06 »
Cytat: lares
A ile teraz Linux ( ten najnowszy kernel 3.1 ) potrafi obsłużyc rdzeni?
Vista odpowiednio obsłuży procesor posiadający maksymalnie 8 rdzeni, a Linux potrafi obsłużyć taki z 64'oma rdzeniami czy więcej jest teraz w stanie ?
Przeszukaj archiwum listy, bo na to pytanie już szczegółowo odpowiadałem (plus ile maksymalnie pamięci obsłuży)
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Ksanderon

  • Gość
Procesory wielordzeniowe, a linuks.
« Odpowiedź #10 dnia: 2011-11-05, 11:29:29 »
Mógłbym założyć osobny temat ale stwierdziłem, że nie ma sensu. Ostatnio czytałem sobie wpis na jakimś blogu porównujący FreeBSD i jądro Linux -w sumie wydawał się dosyć wiarygodny. Zastanowiło mnie w nim, że wg. autora( raczej nieprzyjaźnie nastawionego do BSD) implementacja wątków użytkownika nie pozwala na Linuksie na wykorzystanie wielu procesorów do ich obsługi  w ramach jednego procesu natomiast w BSD i Solaris tak. Czy to prawda, jak to obejść(tzn. rozłożyć obciążenie na wiele procesorów w ramach "jednego programu" zachowując w miarę wygodny, szybki i bezpieczny interfejs wymiany informacji między poszczególnymi "jednostkami wykonującymi") gdzie szukać wiarygodnych informacji? Dodatkowo ten ktoś porównywał wydajność wątków jądra i użytkownika, z tego co zostało napisane wątki jądra są sporo wolniejsze- czy to prawda?

pkraszewski: Włókna (fiber)- chodzi o wątki bez "planisty systemowego"? Istnieje implementacja na Linux czy tylko na Windows? Gdzie jest sens tego używać?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3056
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Procesory wielordzeniowe, a linuks.
« Odpowiedź #11 dnia: 2011-11-05, 19:45:48 »
Ksanderon: włókna przypominają wątki z windows 3.11. Włókno wykonuje się tak długo, aż się zakończy, albo wywoła funkcje yield, oddającą sterowanie innemu włóknu. Dodatkowo oczywiście włókno oddaje sterowanie przy operacjach blokujących, jak sleep, read, write, itd. Czy jest wspierane na Linuksie - nie musi, bo może być realizowane przez runtime danego języka bez wsparcia od OSa.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy