Skalowalność systemu na wielu procesorach

posted on czerwiec 24th, 2008 ·

Na rynku procesorów dla komputerów klasy PC swoje miejsce już dawno znalazły procesory tzw. dwurdzeniowe, a procesory czterordzeniowe stają się coraz tańsze. Procesor wielordzeniowy to de facto układ kilku oddzielnych procesorów o współdzielonej magistrali. Rodzi się pytanie, czy procesor n-rdzeniowy wykona szereg operacji n razy szybciej niż jeden procesor. Jak łatwo się domyśleć, odpowiedź brzmi “nie, jest wykona”.

Oprogramowanie nie jest idealne i nie jest przystosowane do obsługi wielu procesorów. Większość wykorzystywanych przez nas algorytmów ma charakter sekwencyjny, tzn. aby wykonać następny krok, trzeba zakończyć poprzedni. Nawet gdy programista poprawi algorytm tak, aby korzystał z wszystkich procesorów, nigdy nie osiągnie stuprocentowej skuteczności. W praktyce, ta część programu, której nie daje się zrównoleglić wynosi co najmniej 10%. Czy więc procesor 100-rdzeniowy jest tylko 10% wolniejszy od 100 osobnych procesorów? Kolejny raz odpowiadam “nie”.

Gene Amdahl sformułował prawo dotyczące wyznaczania maksymalnego przyśpieszenia programu równoległego w środowisku wieloprocesorowym.

Wzór na przyśpieszenie n to liczba procesorów, a s to procent części sekwencyjnej programu.

Wzór interpretujemy w taki sposób, że zawsze istnieje nierównoległa część programu, w której trzeba oczekiwać na wynik poprzedniej operacji. Niemożliwe staje się więc wtedy przekazanie kolejnego rozkazu innemu procesorowi.

Poniżej przedstawiam teoretyczne przyśpieszenie programu w stosunku do systemu jednoprocesorowego na systemach o różnej ilości procesorów. Wartość dla nieskończenie wielu procesorów została obliczona z granicy funkcji. Testuję kilka programów o różnym procencie zrównoleglenia. Wartość liczbowa wyraża przyśpieszenie w stosunku do systemu 1-procesorowego.

% sekwencyjności 15% 10% 5% 0,1%
1 procesor 1 1 1 1
2 procesory 1,7 1,8 1,9 2
4 procesory 2,8 3,1 3,5 4
8 procesorów 3,9 4,7 5,9 7,9
20 procesorów 5,2 6,9 10,3 19,6
100 procesorów 6,3 9,2 16,8 91
nieskończenie wiele 6,7 10 20 1000

Jak widać, potencjalnie niewielki procent kodu, który nie daje się wykonać równolegle ma bardzo poważne skutki w wydajności programu na większej ilości procesorów. Nawet 99,9% równoległości programu spowoduje teoretycznie wzrost szybkości maksymalnie tysiąckrotnie.

Popatrzmy teraz na benchmark, aby odnieść te teoretyczne obliczenia do rzeczywistości. Bierzemy pod uwagę procesory Phenom X3 8750 oraz Phenom X4 9750. Są one idealne do tego porównania, ponieważ różnią się tylko i wyłącznie ilością rdzeni, podczas gdy częstotliwość taktowania, czy ilość pamięci podręcznej jest taka sama.

Benchmark WinRAR

Jak widać, w żadnym z testów procesor trzyrdzeniowy nie jest półtora razy szybszy od dwurdzeniowego, choć potencjalnie tego byśmy oczekiwali. Jest to potwierdzenie, że rzeczywiście programy testujące nie są do końca równoległe. Przy okazji oceniłem program WinRAR, aby określić, w jakim stopniu algorytm kompresujący jest napisany równolegle. Wynik to ok. 90%.

W teście nie brałem pod uwagę strat wydajności wynikających z konstrukcji sprzętu, np. zapychania się magistrali między procesorami, problemów z zachowaniem spójności danych w poszczególnych L1 cache z pamięcią RAM, czy podziałem wątków na procesory (system operacyjny).

Powiązane:

→ 1 CommentTags: Technika

Bezpieczeństwo SSH to walka, więc ulepsz sshd_config dla szatana!

posted on czerwiec 17th, 2008 ·

Bardzo wiele serwerów korzysta z protokołu SSH do udostępniania powłoki. Wszyscy wiedzą, że jest to protokół bardzo bezpieczny. Mniej osób zdaje sobie sprawę z tego, że najsłabszym ogniwem w systemie zabezpieczeń systemów jest użytkownik i jego hasło. Postaram się przedstawić kilka prostych sztuczek jak uczynić SSH chociaż trochę bezpieczniejszym.

1. Domyślny port, na którym działa SSH to 22. Dobrym pomysłem jest przenieść SSH na port powyżej 1024. Unikniemy w ten sposób znakomitą większość ataków, jaką są ataki słownikowe. W większości są to niegroźne próby zalogowania się przy użyciu haseł pobranych ze słownika. Jednak gdyby jakimś cudem hasło, któregoś z użytkowników znalazło się w takim słowniku sytuacja przestałaby być mało groźna. Alternatywnym rozwiązaniem jest stosowanie skryptów, które przeglądają logi i po kilku nieudanych próbach zalogowania dodają do firewalla regułkę blokująca adres IP atakującego. Osobiście korzystałem jedynie z Bruteblocka, który działa na FreeBSD i można go sobie zainstalować z portów.

2. Kolejną ważną rzeczą jest niepozwolenie na logowanie się przez SSH superużytkownikowi (root). Musimy zatem dopilnować, aby opcja PermitRootLogin była ustawiona na no. Logujemy się wówczas na zwykłego użytkownika, a prawa roota uzyskujemy poprzez użycie komendy su lub sudo. Należy dopilnować, aby użytkownik, z którego chcemy mieć możliwość użycia komendy su znalazł się w odpowiedniej grupie - najczęściej jest to grupa wheel.

Można również w konfigu demona SSH wyszczególnić, jacy użytkownicy mają prawo do logowania się przez SSH:

AllowUsers nowaker kwiat admin

3. Domyślnie demon SSH pozwala na logowanie się przy użyciu protokołów w wersji 1 oraz 2. Wersja 1 jest mniej bezpieczna dlatego powinniśmy zezwalać na używanie tylko wersji 2:

Protocol 2

4. Dobrym pomysłem jest również zezwalanie na łączenie się jedynie z określonych adresów IP. Można tego dokonać poprzez odpowiednie regułki do firewalli lub poprzez użycie tzw. wrapperów TCP. W takim przypadku korzystamy z pliku /etc/hosts.deny i uzupełniamy go wg uznania.Warto również zastanowić się nad limitowaniem ilości połączeń SSH w jednostce czasu za pomocą firewalla.

W ten oto sposób przedstawiłem kilka bardzo prostych sposobów na minimalne zwiększenie bezpieczeństwa naszego demona SSH. Nie jest to może instrukcja typu kopiuj-wklej, aczkolwiek przy odrobinie chęci każdy początkujący administrator powinien sobie z tym poradzić.

Dzięki dla kwiata, administratora FreeBSD na serwerze Panic.PL za kilka poprawek merytorycznych :)

P.S. Tytuł wpisu stanowi nawiązanie do wpisu na zdzichuBG’u ;)

→ 3 CommentsTags: Bezpieczeństwo

Cztery pulpity w Windows XP i nie tylko - Microsoft PowerToys

posted on czerwiec 15th, 2008 ·

KDE i Gnome mają obsługę wirtualnych pulpitów już od dawna, podczas gdy najnowszy Windows jeszcze tego nie ma. Podczas przełączania za pomocą ALT+TAB widzimy tylko ikony poszczególnych programów, zamiast podglądu okna programu. I wiele innych… Okazuje się jednak, iż na stronie Microsoftu udostępniona jest seria tzw. PowerToys dla Windows XP, które usprawniają codzienną pracę z systemem.

Poniżej podaję listę “mocnych zabawek”, z których skorzystałem wraz z linkiem do ściągnięcia. Resztę dodatków (14) znajdziecie pod tym adresem. Ściągnięcie nie wymaga żadnych potwierdzeń legalności systemu.

Virtual Desktop Manager w akcji: Cztery pulpity

→ 2 CommentsTags: Narzędzia