Koniec z zawieszającym się oprogramowaniem?

Naukowcy z Uniwersytetu Michigan sądzą, że udało im się rozwiązać problem z zawieszającym się oprogramowaniem.
Najczęstszą przyczyną zawieszania się aplikacji jest próba uzyskania dostępu przez różne części programu do tych samych danych (wątki w oczekiwaniu na siebie blokują się wzajemnie). Problem zakleszczania oczekujących na siebie wątków staje się bardziej istotny, jeśli weźmiemy pod uwagę coraz bardziej złożoną architekturę nowoczesnych procesorów i oprogramowania. CPU zawierają coraz większą liczbę rdzeni, a oprogramowanie może wykonywać określoną liczbę zadań w tym samym czasie.

Kontroler o nazwie Gadara opracowany przez amerykańskich naukowców wykorzystuje technikę sprzężenia zwrotnego, na wzór samochodowych systemów kontroli trakcji lub termostatów w systemach grzewczych. Zadaniem Gadary jest zlokalizowanie potencjalnych blokad a następnie zastosowanie logiki sterującej, uniemożliwiającej zakleszczenie wątków.

Stéphane Lafortune, jeden z profesorów uczelni biorących udział w projekcie przekonuje, że opracowanie rozwiązania zdolnego przewidzieć ewentualne zamrożenie funkcjonowania programu to całkowicie nowe podejście do problemu. Dotychczas bowiem programiści próbowali usuwać potencjalne przyczyny zawieszeń w drodze testowania aplikacji lub analizy kodu, skutkujących koniecznością jego przepisania. "Błędy korygowano ręcznie, a nie automatycznie. Gadara automatyzuje ten proces" - twierdzi naukowiec.

Szczegółowe omówienie działania kontrolera znaleźć można na stronie Usenix.org w dokumencie pt. "Gadara: Dynamic Deadlock Avoidance for Multithreaded Programs" (w j. angielskim).
Oryginalny tekst został opublikowany na www.idg.pl
Ocena:
Twoja ocena:

Komentarze (17)

max

09-12-2008 10:56

re phi: zaraz Cię zjedzą M$-trolle:) Oczywiście masz rację z tymi benchmarkami i z podejściem do sprawy. Streściłbym to tak: umiejętności programisty a nie umiejętności kompilatora.

cZepiacz

08-12-2008 23:08

Ale Wam śmiesznie komentarze pouci

phi

08-12-2008 18:20

Poprzedni komentarz nie przeszedł, tym razem krócej: tadziu a próbowałeś porównać MS SQL 2007+ VS z Oracle Forms (Developer/2000) + Oracle 8i na Linuksie? Baza 1 TB, w obu przypadkach 3-4 miliony krotek w wielu tabelach. Podpowiem - we wszystkich badanych zagadnieniach (od łatwości projektu, przez integrację z bazą aż do szybkości pracy) Oracle deklasuje przeciwnika. A to rzekomo przestarzała technologia... Dzisiaj zamiast dobrego oprogramowania wygrywa przeciętność, źle okodowana, z fatalnym debugiem ale tworzona tanio, czyli byle jak. Do tego Microsoft się świetnie nadaje.

phi

08-12-2008 18:14

Jedno mnie zastanawia. Wszyscy piszą o nowych super technologiach, VS, C#, itp itd a nadal najlepiej działają porządnie napisane programy w C, technologii sprzed 30 lat. Gdy ten sam algorytm oprogramować w technologiach Microsoftu albo w prostym, twardym C pod Uniksem i puścić benchmark, to wygrywa oczywiście C. Czasami o rząd wielkości. Dlaczego w obliczeniach inżynierskich nadal używa się Fortrana? Bo działa dobrze, szybko i są do niego świetne biblioteki. Inny eksperyment - baza danych 1 TB z 3-4 milionami wierszy w kilkudziesięciu tabelach. Co będzie szybsze - VS + MS SQL Server 2008, czy Oracle Forms z pakietu Developer 2000 + baza Oracle 8i na Linuksie? Wygra Oracle, prawie deklasując przeciwnika we wszystkich kategoriach (integracja z bazą, szybkość wykonania, jakość kodu, prędkość pracy interfejsu oraz wydajność gotowej aplikacji). Dzisiaj zamiast dobrego oprogramowania wygrywa przeciętność, źle okodowana, z fatalnym debugiem ale tworzona tanio, czyli byle jak. Do tego Microsoft się świetnie nadaje.

~Gość

08-12-2008 15:45

wy tu tacy mądrzy, a prawda jest taka, że po prostu robić im się nie chce, nie debugują, nie optymalizują, napiszą i się cieszą, że się ich program uruchomił i będzie kasiorka ;]

tad

08-12-2008 14:42

myślę, że co najmniej setki czytelników tego forum napisało coś większego niż ja, (jako programiści, jako kierownicy, współwłaściciele, czy choćby w postaci publikacji, wykładów itp) tyle, że nie będą o tym pisać. A ci co piszą mogą napisać co tam poczują a nie co faktycznie robili.

tad

08-12-2008 14:31

@WolfMoon - ja pisałełem, nie dokładnie tak jak proponujesz ale parę w takiej skali napisałem hterogenicznych - jako lider a nie jako autor wyłączny, np. w Wiedniu pod AIX, gdzie dostałem wcześniej drugi certyfikat na masywne przetwarzanie równoległe PS2/Aix a później zarobiłem forsę na rozkręcanie, było to ładnych parę lat temu, później był linuks (Serwery i stacje i bazy danych, java, php), AS/400, później Windows z VS, C#, SQL, XAML, WPF, WCF, WF LINQ do wszystkiego, kilka rodzajów serwerów Microsoft, kilka rodzajów specjalizowanych serwererów do Office, do SharePoint itd... Teraz łączymy to wszystko, jednak Microsft coraz bardziej to dominuje, bo tak wychodzi z całokształtu kosztów (na MBA uczą tego każdego, nawet ograniczonego - można iść np. na MBA dla IT i zobaczyć na przykładach i policzyć jak mylne mogą być zdawałoby się oczywiste wnioski co do opłacalności gdy system darmowy i reszta opensource)

tad

08-12-2008 14:16

aby dobrze pracować trzeba też mieć dobre przerwy w pracy - a większość ideologicznych wrogów Windows jest wprost super w dawaniu mi odprężenia i upewnianiu w prawidłowości wybranej drogi (czyli nie decydowania się na jedyną możliwość i uczeni się szeroko a w wybranych miejscach głeboko i wtedy sięganiu wysoko). Ja mam sukcesy mimo, ze nie jestem nadczłowiekiem ani super kimśtam (adminem czy programistą czy współwłaścicielem). :)

WolfMoon

08-12-2008 14:16

No dobra, panowie informatycy. A teraz ręka do góry, który napisał coś bardziej skompilowanego niż kalkulator ? Zdajecie sobie sprawę, jak skompilowane potrafią być współczesne aplikacje? Nie mówię tutaj nawet o Wordzie czy Excelu, ale o systemach przetwarzających ogromne ilości danych, wykonujące olbrzymie ilości obliczeń. Skomplikowanie architektury takich systemów + ilość wątków/procesów jakie działają jednocześnie na takich maszynach jest nie do ogarnięcia przez pojedynczego człowieka. Czasami nawet zespół ludzi, dobrze wykształconych z dużym doświadczeniem nie jest w stanie przewidzieć wszystkich stanów w jakich może znaleźć się system, co jest następstwem właśnie wielowątkowości. O wyścigach pewnie każdy słyszał, ale czy każdy zna 100% metodę (poza ogólnikiem w stylu "optymalizacja i debug") aby się ich pozbyć? Zwłaszcza w systemach, na działanie których może mieć wpływ kilka tysięcy czynników zewnętrznych ?

tad

08-12-2008 14:13

@Gość - rozpacz braku argumentów jest porażająca. NIgdy nie twierdziłem, że jestem wielki, raczej uwaząm się za zwykłęgo, a atakujących tak marnie (bez zainstalowania i sprawdzenia, bez przeczytania i pouczenia się itd) za małych/ograniczonych z własnego wyboru.

Mołot

08-12-2008 13:45

Optymalizacja i Debug - zapomniane rzemiosła.

~Gość

08-12-2008 13:42

@tad - ciagle podkreslasz jaki to z Ciebie wielki informatyk, admin i wogole. Cos mi sie widzi ze Ty chyba jednak nie masz co robic bawiac sie w naczelnego komentatora. Wez sie lepiej do roboty

tad

08-12-2008 13:20

tak, ale nie tylko. Zawieszanie to rónież prolem braku dobrych architektów aplikacji, brak wystarczającej optymalizacji przydziału prac: które elementy i jak rozdzielić na grupę a które dać jednemu - co ułatwia/utrudnia unikanie problemów. Oczywiście języki programowania są też niebagatelne, podobnie jak metodologia, projekt, środowisko architektoniczne, deweloperskie, biblioteki wspomagające, architektura wspierająca/wymuszająca. Bardzo ważny jest zakres i poziom doszkolenia programistów z aktualnych rozwiązań i dobrych praktyk w współbieżności i ustanowione standardy niskopoziomowe i architektoniczne i sposby ich weryfikacji. Wszytko ma sens, o ile liderzy i zespoły są wystarczająco świadome tego co wiedzą i tego czego jeszcze nie wiedzą. A ich kierownik potrafi utworzyć gwarancje i przekonać zarząd do opłacalności podejścia poprawnego. Synchronizacja to nie tylko sztuka, to tez ogromna wiedza (może specjalność już czas tworzyć) i infratruktura narzedziowo-organizacyjna. Pokazane roziązanie może mieć za jakiś czas sens również biznesowy o ile będzie wystarczająco szeroko wystarczająco skuteczne jedocześnie umożliwiając tańsze i szybsze tworzenie aplikacji będących konkurencyjnymi do innych rozwiązań przy liczeniu wszystkich kosztów w poszczególnych cyklach księgowych. Na razie to tylko początki akademickie (jakby zestaw ideii + bardzo ograniczona alfa) a różnymi dobrymi chęciami piekło codzienności już dawno brukowali. Ja życzę im powodzenia, bo wtedy programiści zajmą się bardziej ambitnymi tematami a mniej szarymi zabijającymi wydajność pracy programisty upierdliwościami - tak jak to juz jest od początku komputerów: kolejne języki, kolejne architektury, kolejne środowiska, kolejne metodologie, kolejne wzory organizacji zespołów i firmy. Nic nowego, kolejny próba, w tym samym zbiorze. Takie rozwiązania mają wielki sens gdy programiści zarabiają dużo, dygy programiści zarabiają mało , można sobie pozwolić na linuksy, c++ javy itp wszędzie. gdyby programiści byli prawie darmo w ogromnej liczbie to nawet makroasemblery mogłyby być optymalne kosztowo za całokształt.

mario

08-12-2008 12:14

Następny kod zajmujący zasoby sprzętowe tylko po to aby omijać błędy programistów. Deadlock to jest błąd programisty a nie problem komputerów czy systemów operacyjnych. Oczywiście większość firm zamiast zainwestować w dobrego programistę woli płacić grosze jakiemuś pseudo specowi i potem są tego efekty. Synchronizacja wątków czy procesów jest jednym z podstawowych elementów w sztuce, zwłaszcza w dobie wielozadaniowych systemów operacyjnych.

Konio

08-12-2008 12:07

Na pewno nie koniec, program mozna zawiesic na wiele innych sposobow, np. proba wykonania operacji bez ustawionego timeoutu, przez wycieki pamieci, odwolania to nieprawidlowych adresow pamieci.

caroon

08-12-2008 11:44

Podstawowa kwestia przy zawieszaniu programow, to dobrze napisany program, zgodny z API danego systemu. Druga, to obsluga procesow przez sam system i wplyw na jego stabilnosc.

~Gość

08-12-2008 11:26

hmmm.. no to może w końcu coś się zmieni na plus :)

Polecane

PC World z prezentem!

Tak, zamawiam 12 wydań PC World po 14,09 zł każde (zamiast 19,90 zł) od numeru 6/2012.
Dodatkowo program Panda Antyvirus Pro 2012,
chroniący aż 3 komputery, dostanę za darmo.

PC World 6/2012
Nowy numer PC World 6/2011
Razem: 169


  • Z darmową wysyłką
Wyrażam zgodę na wykorzystywanie mojego adresu email do celów marketingowych. rozwiń »

Pobierz bezpłatnego e-booka

20 lat polskiej sieci
Ebook 20 lat polskiej sieci to kompletna charakterystyka polskiego internetu (oraz polskiego internauty). Odpowiadamy na pytanie, jak wygląda nasz kraj na tle bliższych i dalszych europejskich sąsiadów pod względem popularyzacji szerokopasmowych łączy internetowych i rynku mobilnego. Wymieniamy również wady i zalety korzystania z bezpłatnych punktów dostępowych.
Jeśli chcesz otrzymać darmowego e-booka, wpisz swój adres e-mail. Wyślemy Ci go natychmiast!
Wyrażam zgodę na wykorzystywanie mojego adresu email do celów marketingowych. rozwiń »