Kernel Traffic
Latest | Archives | People | Topics
Wine
Latest | Archives | People | Topics
GNUe
Latest | Archives | People | Topics
Czech
Home | News | RSS Feeds | Mailing Lists | Authors Info | Mirrors | Stalled Traffic
 

Kernel Traffic #131 For 3 Sep 2001

By Zack Brown

Translated By:  Maja KrólikowskaPaweł Kot  and  Tomasz Torcz

linux-kernel FAQ | zapisz się na linux-kernel | archiwa linux-kernel | kernelnotes.org | Nawigator po źródłach Linuksa LxR | Wszystkie jądra | Porty jądra Linuksa | Dokumentacja do jądra | Encyklopedia Gary'ego: jądro Linuksa | #kernelnewbies

Table Of Contents

Introduction

Cóż, wróciłem z wakacji, Były fajne, ale za krótkie. Gdy już się przyzwyczaiłem do dziewięciogodzinnej różnicy czasu, musiałem już wracać do domu. Więc tak. W tym numerze starałem się uchwycić najważniejsze zagadnienia z poprzednich tygodni, ale było ich naprawdę dużo.

Z dobrych wiadomości: Cedric Duval napisał łatę na Mutta, która naprawia zepsute wątki (lub, jak kto woli psuje wątki). Przez długi czas używałem starej łaty dodającej tę cechę, napisanej przez Davida Weltona. Cederic zajął się tą łatą, dostosował ją do nowych wersji Mutta i nieco wygładził. Można ją znależć pod adresem http://cedricduval.free.fr/mutt/. Polecam z całego serca. Wszelkie uwagi odnośnie łaty wysyłajcie do Cedrica.

Mailing List Stats For This Week

We looked at 3770 posts in 15525K.

There were 967 different contributors. 500 posted more than once. 267 posted last week too.

The top posters of the week were:

1. Rozwój nowego graficznego bootloadera

6 Aug 2001 - 15 Aug 2001 (18 posts) Archive Link: "[OGŁOSZENIE] Graficzny bootloader Gujin 0.4"

People: Etienne LorrainH. Peter AnvinEric W. Biederman

Etienne Lorrain ogłosił:

Ukończyłem prace nad wersją 0.4 bootloadera Gujin dystrybuowanego na zasadach GPL.

Strona domowa projektu (ze zrzutami ekranów) jest tu:
http://gujin.sourceforge.net/
Dokumentacja (FAQ, HowTo) jest tu:
http://sourceforge.net/docman/display_doc.php?docid=1989&group_id=15465
Pozostałe informacje oraz źródła i prekompilowane pakiety są tu
http://sourceforge.net/projects/gujin/

Bootloader, w skrócie, umożliwia:

  1. Pracę z PC-tami mającymi przynajmniej procesor 80386 oraz kartę graficzną VGA, VESA1 lub VESA2+.
  2. Ładowanie obrazów jądra Linuksa (zImage i bzImage) bez pomocy LILO oraz przełączanie jądra z trybu rzeczywistego przy pierwszej instrukcji jądra wykonywanej w trybie chronionym. Możesz go użyć do ładowania dowolnego rozmiaru jądra i initrd, oraz z łatwością wybierać tekstowy lub graficzny tryb uruchamiania systemu.
  3. jest prawie całkowićie napisany w C przy użyciu GCC, więc łatwo go modyfikować/poprawiać. Wykorzystuje e2fsprogs-1.22 do obsługi systemu plików E2FS oraz całkowicie przepisanej biblioteki zlib do rozkompresowania jądra. Działa również obsługa FAT12/FAT16.
  4. pozostaje w trybie rzeczywistym przez cały proces butowania, więc powinien być zgodny ze wszystkimi PC-tami.
  5. Może zostać zainstalowany jako bootloader (na razie jedynie na dyskietce) lub jako DOS-owy/Windowsowy boot.exe
  6. 80% kodu jest już napisane, więc pozostaje napisanie ostatnich 80%, aby dojść do wersji 1.0 -:). IMHO jest to już dobry pomysł na dyskietkę awaryjną lub na porządny system ładujący z dyskietki (minimalna konfiguracja to ok. 20 Kb).

Matthias Andree spytał, czy jest możliwość przekazywania parametrów do jądra, na co Etienne odpowiedział:

W chwili obecnej jest to możliwe jedynie przy instalacji Gujina na dyskietce lub przy generacji boot.exe. Wykonuje się to przy użyciu opcji "--cmdline=" programu "./instboot" - ta operacja dodaje parametry do każdego jądra, które będzie uruchamiane. Będziesz zatem musiał przekompilować ze źródeł.

Na razie nie ma możliwości podawania różnych opcji dla różnych jąder.

Popatrz także na "./instboot --help". Maksymalny rozmiar napisu to 64 bajty (można to zmienić przy kompilacji, popatrz do pliku boot.h, struct gujin_param_str->extra_cmdline).

Docelowo będzie konfiguracja, gdzie będzie można to pole zmieniać, ale najpierw potrzebny jest bardziej ogólne menu systemowe, a także sposób na wybór układu klawiatury.

W pewnym miejscu H. Peter Anvin zauważył, że "przełączanie jądra z trybu rzeczywistego przy pierwszej instrukcji jądra wykonywanej w trybie chronionym" "jest bardzo złym pomysłem. Jądro nie bez kozery zaczyna się uruchamiać w trybie rzeczywistym: oznacza to, że jądro nie musi polegać na boot loaderze, aby ten przekazał mu wszystko, czego potrzebuje z trybu rzeczywistego zanim wejdzie do trybu chronionego. Interfejs do punktu startowego trybu rzeczywistego jest dość mały i stabilny, podczas gdy miejsce wejścia do trybu chronionego jest wewnętrzną sprawą jądra i nie ma do niego żadnego interfejsu, który możnaby zagwarantować, że jest stabilny -- ponownie, z dość istotnych powodów." Etienne odpowiedział:

Najwyższa pora wytłumaczyć, czemu tak zrobiłem - to rozwiązanie zdecydowanie nie jest najprostsze.

Po pierwsze, chciałem powiedzieć, że obecny interfejs Linuksa jest naprawdę stabilny: jeśli zdefiniujesz "BOOT_KERNEL_BEFORE_2_0" w vmlinuz.[c|h], Gujin będzie w stanie uruchomić wcześniejsze niż 1.0 wersje Linuksa. W ten właśnie sposób Gujin uruchamiał jądra do tej pory.

Rozgryzając interfejs jądra dla bootloadera, uznałem, że jest on ciut skompilowany: musisz nie tylko przekazać parametry w pamięci (pod adresem 0x9000:0000 lub w rejestrze %esi w 2.4.1+), ale także udostępnić odwołania (ang callback) (wywołania BIOS-u) dla wielu rzeczy.

Alan Cox opisał to (nie do końca) w swojej wiadomości z czerwca, o tytule "Szkic dokumentu na temat wykorzystania BIOS-u przez jądro", dostępnej tu: http://marc.theaimsgroup.com/?l=linux-kernel&m=99322719013363&w=2

Musisz także umieścić w pamięci jeden lub skompresowane pliki (jądro i initrd) bez sposobności sprawdzenia, czy te setki kilobajtów zostały poprawnie odczytane i czy nie są uszkodzone. Nie ma możliwości - jeśli został wykryty błąd przez legacy loader w etapie dekompresji - powrotu do bootloadera mówiąc: Bład krytyczny, wybierz inne jądro.

Te dwa pliki w pamięci muszą być pod stałym adresem liniowym w trybie rzeczywistym - i jeśli masz menedżer pamięci (himem.sys) załadowany, te adresy mogą być zajęte. Zwykle, na dnie pamięci można znaleźć dane smartdrv. W takim przypadku niemożliwością jest załadowanie pliku pod losowy adres i pozostanie w trybie rzeczywistym, aby wykonywać dalsze przetwarzanie. Gujin natomiast mallocuje pamięć (wykorzystując himem.sys), ładuje i dekompresuje ten plik (sprawdzając jego CRC32), wyłącza przerwania, przełącza się do trybu chronionego, kopiuje ten plik oraz jego adres liniowy i wreszcie skacze do kodu jądra.

Później, wykorzystując "starą" metodę ładowania jądra, masz menu z wyborem trybu graficznego. Cóż, jest to dość skomplikowana rzecz do zaimplementowania w bootloaderze, a interfejs do niej jest naprawdę złożony (nie mówiąc o interfejsie użytkownika), zakładając, że już zapisałeś gdzieś w pamięci, nie wiedząc czy (na przykład) sterownik graficzny został załadowany. IMO, cały śmietnik z wyborem trybu graficznego musi być obsłużony przed wyborem jądra do załadowania.

Przypuszczalnie mógłbym znaleźć i inne problemy, ale nie chcę uprawiać destruktywnej krytyki.

Co proponuję? Zróbmy to prościej:

W skrócie, to jest prawdziwe i pełne oprogramowanie, które obsługuje wszystkie/większość (błędnych) BIOS-ów w ich naturalnym środowisku: trybie rzeczywistym i386. Jeśli dojdą nowe pola do "struct linux_param" (co do tej chwili rzadko sie zdarzało), wówczas trzeba będzie zaktualizować Gujin. W każdym razie jest na GPL - i napisany w C, co umożliwi wielu ludziom modyfikacje w kodzie, co było trudne w przypadku kodu w assemblerze.

W rzeczywistości, z powodu odwowałań konfiguracyjnych BIOS-u do APM / ACPI / PCI, nie jest to takie proste, jak opisałem; ale to się nie zmieniło przy bootloaderze Gujin. Zwróć także uwagę, że tablice SMP są przekazywane w pamięci.

Ostatnią rzeczą, którą chciałem dodać (dla ludzi, którzy doczytali do tego miejsca), to to, że po usunięciu "nagłówka" z pliku vmlinuz, brakuje mi jedynego istotnego parametru z tego nagłówka: urządzenia root (polecenie rdev). Teraz, zgaduję je w wielu konfiguracjach, ale to nie jest idealne rozwiązanie. Myślę, że jednym z prostszych rozwiązań jest dodanie napisu "root=/dev/hd**" w polu komentarza w nagłówku GZIP; ale to nie jest jeszcze zaimplementowane.

Jeszcze z tej samej działki: nie ma sposobu, aby się dowiedzieć, czy jądro będzie w stanie się ładować w trybie graficznym (czy jest dostępny framebuffer VESA, i które tryby BPP są dostępne). Jeśli vesafb nie jest wkompilowane i wystartujesz jądro w trybie graficznym, to jądro się załaduje, ale na ekranie będzie śmietnik. Teraz używam do tego bitu zapisywalności pliku vmlinuz. Rozwiązanie ohydne i wkrótce powinno się zmienić.

Zamykając wątek, Eric W. Biederman dodał:

Nie istnieje dobry powód na używanie 32bitowego punktu startu jądra. W szczególności dość powszechnie używam linuksa na systemach z dokładnie 10 16bitowymi instrukcjami. Na jednym z nich, nie mam nawet normalnej pamięci pomiędzy 640KB a 1MB. Tak naprawdę, jedynym parametrem, które jądro potrzebuje z BIOS-u to rozmiar pamięci, i mógłbym prawdopodobnie wziąć kod z memtest86, więc i tego bym nawet nie potrzebował.

Jednakże rozumiem problemy i braki w obecnym 32bitowym punkcie startu, oraz dlaczego używanie standardowego 16bitowego punktu wejścia jest dobrą rzeczą. Dlatego w 2.5 (o ile ta seria się kiedykolwiek zacznie) chcę włożyć trochę pracy w to, abyśmy mieli standardowy, międzyplatformowy natywny tryb dla punktu wejściowego dla jądra.

Aby zachować przenośność Linuksa nie powinniśmy zakładać istnienia na danej platformie określonego rodzaju BIOS-u. Przynajmniej Alpha-linux jest paskudny z tego powodu. Linux na x86 jest przyjemny, ponieważ, wszystko co potrzebujesz na platformach, które nie obsługują klasycznego interfejsu BIOS-u, to przerzucić się na 16bitowy nagłówek. To zdecydowanie jest struktura, którą warto zachować.

W tej chwili mam stabilną, łatwą do użycia strukturę, która nawet nie jest specyficzna dla linuksa i zawiera parę szczegółów więcej na temat, jak zakodować parametry, aby zadziałały. Struktura jest w formacie ELF dla statycznych plików wykonywalnych ze specyficzną implementacją, w jaki sposób parametry będą przekazywane do niego z bootloadera zanim bootloader zniknie. W szczególności - jak określić rzeczy takie jak urządzenia ISA na płycie, więc w przypadku urządzeń, które nie obsługują próbkowania i nie ma interfejsu firmware do ich znalezienia, nie musimy nawet zakładać co jest, a co nie jest na płycie głównej. Ciekawym przypadkiem nie jest tu jak zakodować urządzenie, ale jak reprezenować jego lokalizację i połączenia pomiędzy urządzeniami.

Być w stanie opisać, jak przerwanie idzie ze slotu pci do rutera irq, do kontrolera przerwań, do lokalnego apic, do cpu i jak równolegle idzie ze slotu pci do ioapic, do lokalnego apic, do cpi. I powiedzieć, że slot pci jest za mostkiem PCIX<->pci, To jest ciekawe zagadnienie. Zwłaszcza w strukturach danych, które przewidują mało specjalnych wypadków. Jesteśmy zamknięci w jądrze ze strukturą danych: struct pci_device, ale jeszcze nie skończyliśmy.

Nie sądzę zatem, że to w porządku opieprzać kogoś za używania 32bitowego punktu wejścia, chociaż zgadzam się z tym, że to jest dość wątpliwa rzecz w chwili obecnej.

H. Peter odpowiedział:

Będzie dużym problemem utrzymanie tak wielkiego interfejsu stabilnym, a umożliwianie bootloaderom bezpośredniego używania go jest poronionym pomysłem. To nas zamknie wewnątrz tego interfejsu, albo spowoduje poważne problemy, gdy będziemy musieli wykonać w nim niezbędne zmiany.

Zamiast tego wszystkiego, wystarczy zauważyć, że najlepiej sobie radzić z tymi rzeczami podczas linkowania jądra. Jeśli powinien być obsługiwany PC-BIOS, zaznacz arch/i386/pcbios, możesz też wybrać inne platformy (zaznaczając na przykład arch/i386/linuxbios), które mają własny kod konfigurujący. Potem zlinkuj jądro z kodem odpowiadającym platformie na której działasz i gotowe.

Dodał:

Nie opieprzam nikogo; powiedziałem, że to zły pomysl. Teraz kodujesz tony założeń, o tym co jądro potrzebuje od bootloadera, co może wkrótce przyprawić o ból głowy. Na przykład rzeczy, które opisujesz mogą się zdezaktualizować za 2 lata gdy na dobre wejdą HyperTransport, Infiniband i 3GIO. Teraz cierpisz bawiąc się z różnymi zgodnościami logicznymi aby wszystko zaczęło działać, co nie jest możliwe chyba, że dość często będziemy mieli poważne problemy.

Nie sądzę, aby to był dobry pomysł. Ten rodzaj danych należy do obrazu jądra, chociaż powinien być wyraźnie wyodrębniony wewnątrz drzewa jądra.

Etienne powtórzył, że interfejs nie zmienił się od dawna, i że było by bardzo ciężko zmienić go w przyszłości, ponieważ coraz mniej ludzi zna technikalia trybu rzeczywistego i8086. Opisał lepszy sposób na robienie tego, ale powiedział także, że nie ma czasu się tym zająć. Dodał "Co więcej, idąc od prostego rozwiązania (ładowanie binarnego obrazu pliku ELF) do złożonego (jak opisałem) żeby rozwiązać problem, który może zaistnieć w przyszłości, to nie mój sposób myślenia: to jest już wystarczająco złożone aby robić proste oprogramowania." Eric odpowiedział, że jest już gotów do zmian tego kodu, który, jak uważa Etienne, jest tak stabilny. Dalszy ciąg dyskusji dotyczył kwestii technicznych.

2. Skalowalny scheduler i dysusja nt. #ifdef'ów

8 Aug 2001 - 14 Aug 2001 (20 posts) Archive Link: "[RFC][PATCH] Scalable Scheduling"

People: Mike KravetzLinus TorvaldsDaniel Phillips

Mike Kravetz napisał:

Pracuję nad skalowalnością schedulera. Zwłaszcza w przypadku używania Linuxa na większych maszynach (większa ilość CPU, SMP tylko na razie).

Zdaję sobię sprawę z większości obiekcji dotyczących zmian w schedulerze. Jednakże, wierzę że poniższa łata rozwiąże część problemów.

Łata implementuje scheduler wielokolejkowy (jedna kolejka na każdy CPU). W przeciwieństwie do większości innych schedulerów wielokolejkowych, które polegają na skomplikowanych sposobach wyrównywania obciążenia, ten scheduler stara się podejmować globalne decyzje i emulować zachowanie bieżącego schedulera SMP.

Wydajność 'low-endowa' (niska ilość CPU i wątków) jest porównywalna do bieżącego schedulera. W przypadku wzrostu ilości CPU lub wątków, wydajność jest o wiele lepsza niż bieżącego schedulera. Wiećej informacji i porównania prędkości na http://lse.sourceforge.net/scheduling/ (wykład z Ottawa Linux Symphosium).

Chciałbym usłyszeć komentarze, czy jest to dobry kierunek w drodze do usunięcia ograniczeń skalowalności w bieżącym schedulerze. Jasne jest, że domyślny scheduler w jądrze powinien działać dobrze w większości przypadków. Moim zdaniem załączona implementacja schedulera uzyskuje to przez swoją skalowalność wraz z liczbą procesorów w systemie.

Linus Torvalds napisał, że nigdy nie zastosuje łaty, ponieważ używa ona #ifdef'ów. Mike i Hubertus Franke odpisali, że przerobią kod tak, aby ich nie używał. Hubertus dodatkowo zapytał jakie podejście zostanie zaakceptowane. Linus odpowiedział:

Wydaje mi się że kod wyglądał rozsądnie, ale tak ciężko czyta się łatę, że nie jestem w stanie poczynić żadnych naprawdę inteligentnych komentarzy.

Jedyną rzeczą która wyglądała naprawdę brzydko była kolejka czasu rzeczywistego. Czy ona _naprawdę_ musi być zrobiona w ten sposób?

Dodał, że właściwie nie uruchomił łaty, więc nie ma pojęcia o wydajności. Napisał "Zakładam, że wykonaliście kilka przebiegów lmbench na różnym sprzęcie (tzn. jedno- i wieloprocesorowym) z i bez łaty? " . Mike odpisał "Tak, podamy wyniki wraz z nowszą łatą. Wyzwaniem będzie zachowanie takiej samej wydajności w przypadku jednego procesora, jak w bieżącym kodzie. #ifdef'y służą do oddzielenia ścieżek dla SMP i UP, i będziemy starali się je wyeliminować. " W tym miejscu Daniel Phillips wtrącił:

Czy mogę wyjaśnić co sugeruje Linus? Zamiast:

#ifdef CONFIG_SMP
.. użycie nr_running() ..
#else
.. użycie nr_running ..
#endif

lepiej napisać:

inline int nr_running(void)
{
#ifdef CONFIG_SMP
int i = 0, tot=nt_running(REALTIME_RQ);
while (i < smp_num_cpus) {
tot += nt_running(cpu_logical_map(i++));
}
return(tot);
#else
return nr_running;
#endif
}

Następnie należy zobaczyć czy można się pozbyć #ifdef'ów również z tego fragmentu. (Jęśliby okazało się to zbyt trudne - cóż, przynajmniej ilość #ifdef'ów została zmniejszona).

A Linus dodał:

Jeszcze lepiej mieć po prostu (w pliku nagłówkowym)

#ifdef CONFIG_SMP
inline int nr_running(void)
{
...
}
.. inne przypadki SMP ..
#else
#define nr_running() (__nr_running)
.. inne przypadki UP ..
#endif

jeśli nie możesz zrobić wydajnych funkcji działających w obu scenariuszach.

Nie, nie zachęcamy do robienia tego wszędzie. Ale powinno się probować.

Obecność #ifdef'ów na zewnątrz kodu ma dwie zalety:

Abstrakcja jest miła - _zwłaszcza_ gdy masz kompilator który widzi poprzez abstrakcję i może generować kod jakby jej nie było.

3. Testowanie wydajności ostatnich jąder z serii 2.4

9 Aug 2001 - 10 Aug 2001 (6 posts) Archive Link: "Niektóre wyniki z bench 32 dla 2.4.8-pre8, 2.4.7-ac10 i 2.4.7"

People: Steven ColdeSteven ColeLinus Torvalds

Steven Cole poinformował: "Przeprowadziłem testy z dbench 32 na jądrach 2.4.8-pre8, 2.4.7-ac10 i 2.4.7. Każdy zestaw testów był przeprowadzony tuż po zbutowaniu systemu, poprzez uruchomienie vmstat oraz time ./dbench 32 bez żadnych odstępów pomiędzy czynnościami. Sprzęt to 384 MB, 450 P3, UP, dysk IDE z ReiserFS na wszystkich partycjach. Testy były przeprowadzone z przezroczystej Konsole i KDE2." Pokazał kilka wyników i podsumowanie:

Przebieg #1 przepustowość 5.88569 MB/sec 2.4.8-pre8
Przebieg #2 przepustowość 5.95613 MB/sec 2.4.8-pre8
Przebieg #3 przepustowość 5.8547 MB/sec 2.4.8-pre8

Przebieg #4 przepustowość 7.84171 MB/sec 2.4.7-ac10
Przebieg #5 przepustowość 7.68447 MB/sec 2.4.7-ac10
Przebieg #6 przepustowość 7.85119 MB/sec 2.4.7-ac10

Przebieg #7 przepustowość 10.2184 MB/sec 2.4.7
Przebieg #8 przepustowość 10.0105 MB/sec 2.4.7
Przebieg #9 przepustowość 10.0215 MB/sec 2.4.7

Linus Torvalds odrzekł:

Zauważ, że dbench pokazuje najlepsze wyniki, gdy nie ma rzeczywistego zapisu na dysk: cały test można całkowicie zoptymalizować. Tak więc, najlepsze wyniki będą gdy (a) zatrzymasz kflushd oraz (b) ustawisz dużą wartość flagi dirty.

Czy wyniki się jakkolwiek zmieniają jeśli zrobisz coś takiego:

killall -STOP kupdated
echo 80 64 64 256 500 6000 90 > /proc/sys/vm/bdflush

co sprawi, że dane na dysk będą rzadziej zapisywane? (Te instrukcje będą zatrzymywać flushowanie co 5 sekund oraz będą trzymały wartości "brudnych" i-węzłów na poziomie 80/90% zamiast domyślnych 30/60%)

W szczególności balansowanie liczby "brudnych" i-węzłów było wcześniej wykonywane naprawdę źle, ale to zostało już poprawione. Podejrzewam, że wartości bdflush były dostosowane do źle działającego przypadku i mogły być zbyt restrykcyjnie ustawione jak dla dbench...

Steven wyspał się i odpowiedział:

Ponownie uruchomiłem dbench z powyższymi ustawieniami. Oto rezultaty: (Takie same warunki, jak we wcześniejszych testach). No a teraz pora iść do pracy.

Przebieg #1 przepustowość 12.7943 MB/sec 2.4.8-pre8
Przebieg #2 przepustowość 12.667 MB/sec 2.4.8-pre8
Przebieg #3 przepustowość 12.7091 MB/sec 2.4.8-pre8

Przebieg #4 przepustowość 13.7765 MB/sec 2.4.7
Przebieg #5 przepustowość 13.9632 MB/sec 2.4.7
Przebieg #6 przepustowość 13.9318 MB/sec 2.4.7

Linus odrzekł:

No, wygląda lepiej

Problem z dbench jest taki, że nie ma bata żeby zoptymalizować system dla niego w sposób ogólny, bo to taki dziadowski test jest.

Na przykład, czekanie do samego końca na rzeczywiste zapisanie na dysku jest zdecydowanie najlepszym ustawieniem dla dbencha, ale zupełnie bezużytecznym w praktyce.

Podejrzewam, że do optymalnych wyników dbencha będziemy zawsze potrzebować, aby administrator wykonał te obrzydliwe sztuczki, ale jednoczeście strasznie mi się nie podoba konieczność ich wykonywania i chciałbym aby domyślne ustawienia wypadały w testach dość dobrze.

Przykładowo, zabijanie kupdated nie jest zbyt "sensowne". Ale podejrzewam także, że skoro już balansowanie "brudnych" i-węzłów działa w miarę, to "rozpoczęcie zapisywania, gdy 30% jest pełne" jest ciut za wcześnie.

Tak więc zamiast podziału 30/60% (pierwsza wartość to "kiedy zacząć zapisywać na dysk", a druga - "kiedy aktywnie zacząć czekać na to"), podział 50/75% może być całkiem sensownym dla przeciętnego obciążenia, przy okazji poprawiając nieco wyniki dbencha.

Czy ty (albo ktoś inny) chciałbyś się jeszcze trochę pobawić i przypatrzyć się więcej zarówno testom dbencha, jak i interaktywnym wrażeniom?

Ogólnie

echo x 64 64 256 500 3000 y > /proc/sys/vm/bdflush

ustawi "start zapisu na dysk" na 'x'%, a "start synchronicznego czekania" na 'y'% (i zrestartuj kupdated za pomocą "killall -CONT kupdated"). Ciekawie będzie usłyszeć gdzie leży złoty środek.

Steven odowiedział (testując 2.4.8-pre8):

Uruchomiłem dbench 32 dwadzieścia osiem razy. Wyniki poniżej. Jednostki przepustowość w MB/s, tak jak w dbench. W wierszach jest pierwsza wartość: "rozpocznij zapisywanie". W kolumnach jest druga wartość: "rozpocznij synchroniczne oczekiwanie". Na przykład pole w lewym dolnym rogu tabelu zostało uzyskane po wydaniu polecenia echo 30 64 64 256 500 6000 60 > /proc/sys/vm/bdflush

60 70 80 90
90 8.693 8.690 8.853 8.875
80 8.822 8.724 8.703 8.910
70 8.558 8.557 8.785 8.420
60 8.194 8.141 8.006 7.847
50 6.662 6.738 6.904 6.892
40 6.347 6.252 6.380 6.274
30 5.687 5.802 6.209 5.898

Nie mam dostatecznie dużego zbioru wyników do "interaktywnych odczuć", poza tym, że nigdy nie jest dobrze przy dużym obciążeniu maszyny. W trakcie weekendu postaram się jeszcze pobawić trochę dbenchem, aby uzyskać jakieś użyteczne wyniki.

4. Timpanogas uwalnia źródła narzędzi dla Netware

10 Aug 2001 - 17 Aug 2001 (5 posts) Archive Link: "timpanogas.org - zdobądź póki możesz."

People: Jeff V. MerkeyPavel Machek

Jeff V. Merkey napisał:

Jeśli ktoś chce cokolwiek z rzeczy dotyczących systemu plików Netware'a dla NT lub Linuxa najlepiej żeby je zdobył teraz. Nadal będę pracował nad Linuxowymi zmieniaczami taśm , SCI itd., ale rzeczy NetWare'owe dostępne będą tylko do soboty, kiedy to serwery zawierające technologię specyficzną dla NetWare lub Novella zostaną usunięte. Pierwszego września 2001r. zakładamy sprawę sądową przeciwko Novellowi, aby pozbyć się zobowiązań wobec nieistniejącej firmy i nas samych, które to zobowiązania wiszą nad nami od czterech lat.

Strona nadal będzie w sieci, ale wiele się zmieni. Ściągać można z www.timpanogas.org i ftp.timpanogas.org. Jeśli chcesz czegokolwiek, teraz jest czas aby to dostać. Ta strona nadal będzie się zajmowała kodem SCI.

Kiedy pojawi się nowa strona, niektórzy moga się zdziwić, ponieważ nasz firma oprócz oprogramowania prowadzi również laboratorium genetyczne. Na stronie będzie można znaleźc wyniki naszych manipulacji genetycznych na probiscidea i mesembrecanthea. Wyizolowaliśmy lekarstwo na artretyzm (nie leczenie, trwałe lekarstwo) z roślin amerykańskich banków nasion i przeprowadziliśmy podział genów i indukcję polyploidalną z wieloma z nich. Będziemy kontynować pracę nad linuxowym SCI i w innych obszarach.

Pavel Machek zasugerował umieszczenie narzedzi dla netwarefs na licencji GPL. W przeciwnym wypadku nikt nie będzie mógł używać źródeł. Jeff odpowiedział " Podmountuję serwer manos pod server FTP tego wieczora. Na nim znajdują się wszystkie archiwa kodu TRG. Zrobię to dziś wieczorem. Archiwum znajdzie się w /archive w katalogu ftp. Zawiera ono także cały kod naszych projektów nad Microsoftowym systemem plików W2K. Jeśli komukolwiek się przyda - proszę bardzo." Pavel powtórzył "Umieszczanie kodu w /archive nie wystarczy, to nie czyni go GPLowym. Te narzędzia które są przydatne powinny być umieszczone na GPLu aby móc *legalnie* ich używać. (Możesz również pomyśleć o stworzeniu projektu na sourceforge.net i umieszczenie tam kodu ;-)" . Jeff odpowiedział, "Wszystko jest na GPLu, nawet kod MS. Sourceforge to wspaniały pomysł. Zastanowię się nad tym. "

[ przyp. tłumacza - arhtretis, polyploid induction, probiscidea - kandydat na najbardziej zakręconego posta tego KT :). btw, Grekom nie najlepiej idzie pisanie po angielsku :) ]

5. Kernel Build 2.5, wersja 1.1 jest dostępna

11 Aug 2001 - 19 Aug 2001 (24 posts) Archive Link: "Ogłoszene: Kernel Build dla 2.5, wersja 1.1 jest dostępna."

People: Keith OwensRussell KingPhilip Blundell

Keith Owens ogłosił:

Dostępna jest wersja 1.1 systemu budowania jądra dla serii 2.5 (kbuild 2.5). http://sourceforge.net/projects/kbuild/, Pakiet kbuild-2.5, bierzcie wersję 1.1.

http://marc.theaimsgroup.com/?l=linux-kernel&m=99725412902968&w=2 zawiera informację i pierwotnej wersji.

Zmiany od wersji 1.

Ostatnia zmiana pozwoliła mi rozwiązać odwieczny problem z kbuild 2.4. Każda architektura ma swój asembler, który wymaga wyrówniania pól w strukturach C, czy też mapowania nazw C na liczby. Asembler nie może włączyć definicji C, więc potrzebujemy mapowania z konstrukcji C na numery asemblera. Każda architektura rozwiązuje ten problem w inny sposób, żadna z tych metod nie jest w 100% dokładna ani pewna.

i386 na sztywno zapisuje te wyrówniania w kodzie asemblera i ma nadzieję, że definicja struktur się nigdy nie zmieni.

Alpha używa programów w C, który generuje tekst dla asemblera. Ale to nie działa przy kros-kompilacji, ponieważ to podejście zakłada, że HOSTCC == CC.

Cris generuje kawałek kodu asemblera z C i następnie wykorzystuje .include zamiast #include, z jakimś śmiesznym wyborem opcji.

Mips, parisc, ppc i sparc generują kod asemblera, a poźniej wyciągają i przeformatowywują linie z tego kodu. To działa zarówno przy kompilacji lokalnej, jak i przy kros-kompilacji i to już jest prawie tak, jak powinno się robić. Ale są tu jeszcze problemy, o których poniżej.

IA64 w 2.4 jest wyjątkowo obrzydliwe. Używa innych metod w natywnym trybie i przy kros-kompilacji, podczas gdy ta druga metoda wystarczyła by w zupełności. Dostarcza kopię wygenerowanego asm/offsets.h, która jest całkowicie nieelastyczna, ponieważ prawdziwe offsets.h zależy od konfiguracji użytkownika. Co gorsza, offsets.h jest włączane w processor.h i ptrace.h w ia64, więc wpływa na prawie każdy plik C.

Żadna z powyższych metod nie sprawdza zależności. PPC próbuje, ale jest to definiowane ręcznie i jest niekompletne, a żadna inna architektura nie podejmuje nawet próby. Wszystkie architektury zakładają, że użytkownik wykona make dep po jakichkolwiek zmianach w konfigu, które mają wpływ na wyrównania w asemblerze. Jeśli użytkownik zapomni uruchomic make dep i wartośći asemblera i C nie pasują - to robi się kaszana.

kbuild 2.5 ma zaimplementowane rozwiązanie, które działa we wszystkich trybach, jest standardowe dla wszystkich architektur i automatycznie śledzi zmiany zależności. Nie ma więcej miejsca na ludzkie błędy.

Było kilka różnych komentarzy, łat i uaktualnień. W pewnym momencie Russell King zauważył: "Przykro mi, ale wersja GCC na ARM nie obsługuje %c0, na tyle, aby można było się tym posługiwać. Aby w ten sposób wygenerować wyrówniania na ARM trzeba będzie poczekać kilka lat, zanim GCC 3 się nie ustabilizuje na tyle, że będzie można go używać do jądra, a w szczególności do architektury ARM. Proszę, nie używajcie %c0." Philip Blundell odpowiedział: "Sądzę, że to powinno działać również z wersją 2.95.4. Próbowałeś może łaty, którą wysłałem parę miesięcy temu?" Russell odpowiedział: "Nie - nie miałem na razie potrzeby przebudowania gcc, a ta łata ma niski priorytet ponieważ jądro powinno się dać zbudować przy pomocy kompilatorów, które ludzie już mają. Przykro mi, ja nie robię gcc, jak już wcześniej wyjaśniłem."

6. Decyzje dotyczące stabilności 2.4

11 Aug 2001 - 17 Aug 2001 (37 posts) Archive Link: "Zwis na płycie Tyan K7 Thunder wyjaśniony -- SB Live! "

People: Jeffrey IngberAlan CoxManuel McLureLinus Torvalds

W trakcie dyskusji, Jeffrey Ingber zgłosił " Zauważyłem, że sterownik EMU10K1 został uaktualniony w 2.4.8 więc go spróbowałem. Czterokrotnie w czasie odtwarzania zawiesił mi się, więc wróciłem do ALSY." Alan Cox odpowiedział " Sterownik w jądrze wyglądał dobrze. Zmiania w 2.4.8 zdecydowanie źle działa na skrzynkach wieloprocesorowych. " Manuel McLure napisał "W 2.4.8 otrzymuję Oopsy które wyglądają na spowodowane przez kod emu10k1 na maszynie jednoprocesorowej" na co Alan:

Tia. Jak na razie nowy sterownik, który Linus wziął od innej osoby niż poprzedni, psuje

także uważam, że Linus powinien zrobić jedyną słuszną rzecz - cofnąć zmiany. Wycofuję nowy sterownik z -ac. Z moich trzech skrzynek jedna szumi, jedna zawiesza się przy SMP, jedna działa.

Linus Torvalds odpowiedział " Problem z przywróceniem starego sterownika leży w tym, że nikt nie próbował się nim zająć od roku, i jeśli zostanie przywrócony to nikt nie będzie nawet probował go poprawić. A więc przynajmniej na jakiś czas pozostanie nowy sterownik. " Alan zauważył "Myślałem ze to stabilne drzewo, nie 2.5. " Linus odpowiedział:

Cóż, zauważ że _stary_ sterownik również nie jest stabilny i nie działa na wszystkich maszynach. Jest naprawdę źle gdziekolwiek by się nie odwrócić.

Jeśli stary sterownik działałby, usuwanie go byłoby bezmózgowiem. Jednakże stary sterownik _również_ niektórym nie działą - ale nie odzywają się, ponieważ stary sterownik zawsze był zepsuty.

Mamy więc sytuację w której nowy sterownik działa lepiej na jednych maszynach, stary działa lepiej na innych. Oczywiście stary sterownik nigdy nie będzie naprawiony (było na to kilka lat czasu), więc stary sterownik jest znany jako całkowicie zepsuty. Nowy sterownik w tej kwestii ma znak zapytania.

A więc raczej dam szansę nowemu sterownikowi i zobaczę czy ktoś może go naprawić. Na przykład, oops który zgłaszają ludzie jest _chyba_ spowodowany inicjacją taskletu przed zainicjowaniem wszystkich struktur danych na których polega tasklet. Prawdopodobnie przesunięciu obydwu "tasklet_init()" w dół o dwie linie naprawi to.

Nie było odpowiedzi.

7. 2.4.9 i wakacje

16 Aug 2001 (1 post) Archive Link: "Znikam na tydzień, linux-2.4.9..."

People: Linus Torvalds

Linus Torvalds ogłosił:

Wyjeżdżam do Finlandii na tydzień+ i nie będę w tym czasie czytał poczty i newsgrup. Umieszczam 2.4.9 na ftp.kernel.org i sugeruję aby ludzie wypróbowali go i przedyskutowali na liście pocztowej, ale NIE wysyłali emaili do mnie. Będę ciekaw problemów po powrocie, ale nie za bardzo mam ochotę na tysiące wiadomości czekających na mnie.

Dodatkowo, dostaję _dużo_ łatek, więc jeśli twoja się jeszcze nie ukazała, to dlatego że mam ich zbyt dużo. Bez strachu, zawsze jest jutro. Tylko w tym wypadku będzie to "tydzień lub dwa".

Zamieścił listę zmian:

Nie było odpowiedzi.

8. Nowi hakerzy pracują nad jądrem 0.01

16 Aug 2001 - 17 Aug 2001 (4 posts) Archive Link: "instalacja .01"

People: Linus TorvaldsTristanDavid A. FrantzAlbert D. Cahalan

Tristan Sloughter zapytał prywatnie Linusa Torvaldsa o uruchomienie jądra 0.01; Linus prywatnie odpowiedział:

Historycznie, aby móc zainstalować jądro 0.01, musisz mieć pełną dystrybucję minix-386 - to był jedyny sposób aby mieć system plików, skopiować potrzebne pliki itp.

Szczerze mówiąc to również dla mnie minęło dziesięć lat, więc nie pamiętam wszystkich szczegółów.

Najprawdopodobniej i tak nie masz dostępu do minix-386, więc podejrzewam, że to co _powinieneś_ zrobić to spróbować użyć nowszej wersji Linuksa by zbutować to jądro. Potrzebujesz też naprawde starego kompilatora by skompilować Linuksa-0.01 - sądzę, że wymaga on gcc-1.40 lub czegoś w okolicach. Po prostu nie skompiluje się nowszym.

Mimo wszystko to może być zrobione. Chociaż nie robiłem tego osobiście od dziesięciu lat i nigdy z Linuksa. Podejrzewam, że najlepiej Ci bedzie próbować dyskutować jak to zrobić na kernel-list lub podobnych, nie wahaj się cytować tego emaila jako początku takiej dyskusji.

Tristan właśnie to zrobił, mówiąc "Właśnie niedawno przyłączyłem się do tej listy, bo potrzebowałem pomocy. Linus zaproponował mi żebym napisał na lkml i zacytował jego email na początek. Chcę zainstalować jądro 0.01 na moim 386 i nie wiem zupełnie jak to zrobić. Mam 16 lat i pracuję z Linuksem dopiero od dwóch lat. Wydaje mi się, że obejrzenie działającego .01 na moim 386 będzie pouczającym doświadczeniem w poznawaniu jak naprawdę działa maszyna i jak pisać w asemblerze i pracować nad systemami operacyjnymi." David A. Frantz odpowiedział:

jądro 0.01 powstało sporo wcześniej nim zacząłem się zajmować Linuksem, więc nie mogę Ci z nim pomóc. To co moge zasugerować to zainstalowanie i uruchomienie wersji Redhata. Instalator znajdzie wirtualną maszynę (VM), która pozwoli Ci zainstalować drugiego linuksa, którego będziesz mógł uruchomić z sesji VM. Używaj go jako środowiska do nauki. Nigdy tego nie robiłem, może inni będą mieli lepsze komentarze na ten temat.

Myślę, że:

Po pierwsze; jądro jest stale uaktualniane. Najlepszym sposobem na uzyskanie pomocy w czymkolwiek jest praca z aktualnymi źródłami.

Po drugie; wiele narzędzi włączonych do Linuksa zostało znacznie poprawionych ostatnio. Używanie tych narzędzi powinno zaowocować lepszym doświadczeniem.

Po trzecie; Jakość jądra stale się poprawia. Na przykładzie takiego poprawionego jądra można dobrze nauczyć się systemów operacyjnych.

Albert D. Cahalan także odpowiedział Tristanowi:

Weź parę wersji wyżej, może już 0.02, jeśli chcesz mieć nadzieję na uruchomienie kompilatora na tym systemie. Będziesz potrzebował conajmniej 4MB RAM dla kompilacji, ponieważ wczesne jądra nie obsługiwały partycji wymiany.

Minix-386 to zhakowany Minix. Minix jest systemem operacyjnym, stworzonym w celach edukacyjnych, na 8088, który od niedawna jest wolny. Jest cały zbiór łat, które pozwalają na dodanie obsługi 386. Zdobądź i uruchom Miniksa, połataj go, a potem skompiluj Linuksa.

Spróbuj tak:

System plików Miniksa ma najwyżej 64 MB. Stwórz dla niego partycję, partycję wymiany oraz jedną dla nowszej dystrybucji Linuksa. Ten przed-Slackware może być dobry: http://www.ibiblio.org/pub/Linux/distributions/MCC/2.0+/

Um, naprawdę nie chcesz kompilować gcc na 386. Być może będziesz musiał skompilować pośrednie wersje, ponieważ stare gcc może się nie kompilować najnowszym gcc. Być może masz lub możesz pożyczyć nowocześniejszą maszynę do samej kompilacji.

Znalezienie dodatków takich jak libc oraz shell, będzie trudne.

Być może będziesz potrzebował bootloadera "shoelace". Powinieneś móc uruchomić go z LILO.

Nicholas Knight zgłosił zastrzeżenie do uwagi Alberta jakoby Minix-386 był "zhakowanym" Miniksem. Podał odnośnik do strony Miniksa 2.0.2. Strona domowa znajduje się pod adresem:http://www.cs.vu.nl/pub/minix/ Nie było odpowiedzi.

9. Kwestie licencjonowania Qlogic/FC Firmware

21 Aug 2001 - 22 Aug 2001 (60 posts) Archive Link: "Qlogic/FC firmware"

People: David S. MillerJes SorensenAlan CoxMatthew Jacob

Zły David S. Miller zauważył, że Qlogic/FC firmware zostało usunięte z Linuksa. Powiedział:

Kto usunął to ostatnio ze sterowników w 2.4.x i dlaczego?

Zmieniałem sobie parę rzeczy i przez przypadek parę razy zepsułem mój firmware i aby mieć go z powrotem musiałem sięgnąć do starszych jąder żeby z powrotem mieć działającą moją qlogic, kartę FC.

Usuwanie firmware nie ma sensu, jeśli firmware jest niewłaściwy z jakiegoś powodu, trzeba go po prostu poprawić.

Jes Sorensen odpowiedział "Zrobił to Alan po tym jak zwróciłem mu uwagę, że było to niezgodne z GPL (licencja BSD z klauzulą o ogłaszaniu). Naprawdę trudno to poprawić, no chyba, że namówisz QLogic do zmiany licencji dla Ciebie. " Alan Cox dodał, " Dodatkowo firmware, który umieszczaliśmy był poważnie przeterminowany, był wersją typu ,,release candidate'' i wchłaniał tony ramu. " Następnie David powiedział, "Jeśli firmware był przeterminowany trzeba było go zaktualizować do znanej wersji "Qlogic stamp of approval"." Alan odpowiedział, "To wymaga rozwiązania problemu licencji z Qlogic. Rozmawiałem z nimi o innych rzeczach, całkiem sensownie, więc spróbuję od nich wydębić oddzielny moduł ładujący firmware." Jes zauważył:

może być różnie z uzyskaniem tego firmware.

Przejrzałem sterownik QLogic v4.27 z ich strony internetowej i naprawdę jest tam włączony firmware z liczencją GPL.

Dave, jeśli chce Ci się z tym bawić i wciskać to w sterownik qlogicfc.c będziesz przynajmniej miał coś co w pewien sposób będzie na razie działać (modulo wszystkie inne problemy z tym sterownikiem).

http://www.qlogic.com/bbs-html/csg_web/
adapter_pages/driver_pages/22xx/22linux.html

Mają tam głupią licencję 'przeczytaj i zgódź się' na początku tej strony jeśli wchodzisz przez oficjalne qlogic.com, jednakże jeśli kod tam zawarty jest GPL to zakładam, że jest GPL.

Parę wypowiedzi dalej, Matthew Jacob powiedział:

Trochę informacji i komentarzy:

Prawa autorskie "BSD" w f/w które mam z QLogic są tam tylko dlatego, że Theo Deraadt straszył, że wyciągnie QLogic z OpenBSD 2.7. Błagałem ich przez ponad rok żeby zrobili *coś*. Powinienem uzyskać licencję BSD bez klauzuli o ogłaszaniu, ale, no tak.....

Żeby zrozumieć co się dzieje, najlepiej jest załadować fimware do SRAMu karty. W ten sposób *wiadomo*, że rozumie to coś tam (takie jak na przykład SCCLUN). QLogic produkuje firmware w różnych smakach z tym samym numerem wersji i trudno jest wydedukować samowystarczalność albo bezpieczeństwo firmware'u.

Mówiąc to wierzę, że możliwe *jest* w środowisku bez BIOS wyciągnięcie firmware'u z flash romu - trzeba tylko ręcznie pokombinować z rejestrami, które normalnie są dotykane tylko przez firmware; myślę, że *jest* technicznie możliwe wyciągnięcie zawartości flasha do pamięci systemowej, odgadnięcie gdzie jest 'rezydujący' obraz firmware w tym wszystkim i przegrać *to* do SRAM i zrestartować. To stawia Cię w miejscu, w którym byłeś poprzednio.

IMO, najlepszą rzeczą jaką można zrobić jest zrobienie ładowalnego modułu ispfw, który znika po załadowaniu SRAM. Zacząłem iść tą drogą w FreeBSD (jest oddzielny moduł ispfw) - która będzie naprawdę użyteczna gdy kiedykolwiek pojawi się żądanie pamięci modułów we FreeBSD :-). Ma to szczególne znaczenie dla mojego sterownika, ponieważ obsługuje on 1020 (SBus (tak dla NetBSD/OpenBSD, jeszcze nie dla Linuksa) && PCI), 1080/1280 Ultra2, 12160 Ultra3, 2100 FC, 2200FC i 2300FC (w przyszłym tygodniu)- można skończyć z absurdalną liczbą obrazów firmware'ów.

Jestem pewien, że coś podobnego może być zrobione dla Linuksa.

Alan- możesz rozmawiać z QLogic- świetnie. Mi się z nimi rozmawia coraz trudniej. Jeśli uda Ci się przekonać ich aby wypuścili 2100 i 2200 i 2300 f/w na GPL dla Linuka- wspaniale.

Później Matthew sprawdził dwa razy i stwierdził, że kod jest naprawdę na GPL.

10. Stan Kontroli wersji Jądra

23 Aug 2001 - 24 Aug 2001 (12 posts) Archive Link: "kontrola kodu?"

People: Andrew GroverNicholas KnightLarry McVoyAlan CoxGerard RoudierCort Dugan

Andrew Grover zapytał, "Czy rozwijający Linuksa mają zamiar kiedykolwiek zacząć używać kontroli kodu? Ta kwestia była omawiana na Kernel Summit i od tej pory nic o tym nie słyszałem." Nicholas Knight odpowiedział, "Jądro ma kontrolę wersji kodu, nazywa się ona Linus Torvalds, rozumny CVS. To czy główna gałąź rozwoju jądra będzie kiedykolwiek umieszczona w CVS lub czymś takim zależy tylko od Linusa i jak do tej pory nie widziałem żadnych objawów wskazujących jakoby miał to zrobić, przynajmniej zanim nie porzuci prowadzenia prac nad jądrem i nie odejdzie na emeryturę. " Larry McVoy także odpowiedział Andrewowi:

W BitKeeper, którego jeszcze nie skończyliśmy, Linus zażyczył sobie dwóch reczy. Jedną jest usunięcie plików kontroli wersji z drzewa roboczego, a drugą rozbicie drzewa na logiczne części (nazywamy je zbiorami plików), tak by można było łatwo wybierać które łatki są tak naprawdę potrzebne we własnym jądrze.

Jakiś czas temu Linus pingał mnie o to, zrobiliśmy pewne postępy w pracy, ale to co chcemy zrobić nie jest jeszcze gotowe. Gdy tylko to skończymy damy to Linusowi, żeby sobie pooglądał i zobaczymy co o tym myśli.

W międzyczasie ludzie od PPC utrzymyją czysty kod Linuksa w BK, możesz go obejrzeć pod adresem http://ppc.bkbits.net a Ted Tso ostatnio zrobił całkiem miły import różnych wersji jądra. Muszę jeszcze popracować z ludźmi od PPC i Tedem tak by uzyskać jedną wersję kodu; nie jest to łatwe zadanie, bo kod dla PPC ma wiele zmian, a drzewo przygotowane przez Teda jest znacznie milsze, wykonał on mnóstwo pracy aby zachować komentarze i znaczniki czasowe.

Aby uniknąć jeszcze-jednej-wojny-o-BK (yet-another-BK-flamewar), nie mówię że Linus będzie lub nie będzie używał BitKeepera, mówię tylko, że robimy zmiany, których chciał i jeśli je zrobimy to on zobaczy czy jest to dla niego wystarczająco dobre. Powiedziałbym, że trochę odpuścił ze swojego pierwotnego stanowiska mówiącego, że ,,będę używał BitKeepera jeśli bedzie najlepszy'', bo spytałem go czy to znaczyło to co ja pomyślałem, że on pomyślał, czyli ,,nie jest fizycznie możliwe zrobienie tego lepiej'' i zestawiłem to z ',,jest lepsze od wszystkiego innego takiego gówna''. Chyba się zgodziliśmy że raczej chodzi o #2, a niekoniecznie o #1 (co jest dobrą rzeczą, bo w tym tempie będziemy najlepsi kiedyś w tym wieku, a stanie się to wtedy kiedy będę chciał to nazwać najlepszym :-)

Nie było na to żadnej opowiedzi, ale innym razem Alan Cox wypowiedział się na temat możliwości kontrolowania źródeł Linuksa, "To się dzieje. Albo przynajmniej sporo zespołów rozwijających jądro to robi. To nie znaczy, że ogólny CVS jest dobrym pomysłem. CVS pozwala wszystkim innym łatwo wpychać brudy w twój kod." Gerard Roudier asked, "Jacy inni ludzie? Możesz pozwolić tylko zaufanym ludziom na potwierdzanie zmian, a wycofywanie śmieci jest bardzo proste. " Alan odpowiedział, "Takiego modelu używamy. Listą zaufanych ludzi jest Linus Torvalds. " Gerard odpowiedział, "Wskazałeś problem. Problemem tym jest Linus będący jedynym zaufanym zatwierdzającym więcej niż 100 MB podstawowego kodu, tak jak był nim dla mniej niż 1 MB 10 lat temu. Nasz pojedynczy zatwierdzający ma parę innych obciążeń, bo ma pracę zawodową, dzieci, szefa, teściową :), być może zwierzęta domowe itp..." Dodał, "To, że Linux jest taki sukcesem nie znaczy że Linus ma rację chcąc być wciąż opiekunem kodu jądra. To znaczy tylko, że nie aż tak bardzo się myli w tej kwestii, przynajmniej ja tak uważam. :-)"

Innym razem, Cord Dugan powiedział, " Jest wielki pożytek z tego, że nie jest łatwo umieścić swoje zmiany w kodzie. To zmusza ludzi do tego żeby się wielokrotnie zastanowić ,,Czy to jest warte całego tego wysiłku?". To niezły filtr."

11. Oops w sterowniku 3c59x w ostatnich jądrach z serii -ac

24 Aug 2001 - 28 Aug 2001 (5 posts) Archive Link: "oops w sterowniku 3c59x"

People: Wichert AkkermanAlan Cox

Wichert Akkerman zgłosił, "Po przejściu na jądro 2.4 w moim laptopie miałem parę padów i w końcu udało mi się dziś uzyskać z tego oops (bez działających X jest to łatwiejsze :)." Wysłał zdekodowanego oopsa i dodał, "Ten oops został uzyskany przy użyciu jądra 2.4.7ac11 (z dołączoną, ale nie używaną łatą freeswan 1.91). Mam ten sam problem z 2.4.8ac5 i innymi wersjami 2.4 z ostatnich kilku tygodni. " Alan Cox odpowiedział:

Piękny trace. Przejąłeś przerwanie w trakcie wołania PnPBIOS i twoja maszyna eksplodowała. Zrób mi przysługę -

Zmień semafor w drivers/pnp/pnp_bios.c na spinlock_irqsave i __cli/ spin_unlock_irqrestore. Sprawdź czy wtedy pady się skończą.

Wichert odpowiedział, że wydaje mu się, że ta dzięki tej poprawce wszystko zostało naprawione; było jeszcze parę komentarzy i wątek się zakończył.

12. 2.4.10-pre1 jest już dostępne

27 Aug 2001 - 28 Aug 2001 (12 posts) Archive Link: "patch-2.4.10-pre1"

People: Linus Torvalds

Linus Torvalds ogłosił:

Dobra, wróciłem z Finlandii i jest już 2.4.10-pre1 na kernel.org. Załączyłem Changelog..

Najbardziej zasługującą na uwagę rzeczą (przy odpowiednim obciążeniu) jest prawdopodobnie jednolinijkowa zmiana Daniela pozwalająca uniknąć błędów w trakcie wymiany (swapping).

Podesłał changelog:

 

 

 

 

 

 

Sharon And Joy
 

Kernel Traffic is grateful to be developed on a computer donated by Professor Greg Benson and Professor Allan Cruse in the Department of Computer Science at the University of San Francisco. This is the same department that invented FlashMob Computing. Kernel Traffic is hosted by the generous folks at kernel.org. All pages on this site are copyright their original authors, and distributed under the terms of the GNU General Public License version 2.0.

Mirror provided by HKMirror. Sponsored by Porno Verzameling and webcamsex