| | Nie mogliby, bo v2 - na ktorej jest Linux - nie jest kompatybilna z v3.
| wprost w ich FAQ dotyczącym v3. GPL jest wstecznie kompatybilna.| Jakby byla wstecznie kompatybilna, to Linus moglby zmienic licencje kernela.
| A nie moze.| Może. Musiałby przyjmować jedynie kod na licencji "GPLv2 or later" i
| stopniowo zastępować kawałki na GPLv2. W momencie gdy całość kodu jest
| na licencji "GPLv2 or later" można wydać Linuksa na v3.Innymi slowy, kiedy caly kernel zostanie przepisany od zera - w sensie,
wszystkie kawalki na GPLv2 zostana zastapione kodem na GPLv2 lub
nowszym
Dokładnie, a tych kawałków jest zadziwiająco niewiele.
- mozna bedzie wydac Linuksa na GPLv3. Innymi slowy, zmiana
licencji wymaga przepisania kernela. Jakos niespecjalnie to jest sprzeczne
Nie wymaga. Wymaga znaczącej biurokracji i zadymy socjalnej plus
przepisanie kawałków kodu wydanego konkretnie na GPLv2.
| Sun może zrobić to samo, tzn wziąć sobie linuksowe sterowniki a swoje
| modyfikacje wydać na "GPLv2 or later".Tylko ze wtedy musialby licencjonowac Solarisa jako GPLv2 (or later),
a nie v3.
Poprawka. Sun może sobie wziąć sterowniki i je wydać od razu na v3.
Zabieg z v2 or later nie jest konieczny.
[...]
| Poza tym
| v3 jakoś podobno rozjaśnia tę sytuację.W ktorym miejscu?
Wprowadza pojęcie "standard interface".
| Jest roznica miedzy 'zupelnie przyzwoicie jak na okazjonalny dostep
| do nosnika' i wydajnoscia w roli glownego filesystemu.| No jest, tyle że nie zawsze tę stronę co by się człowiek spodziewał. ;-)
| http://www.csamuel.org/2007/04/25/comparing-ntfs-3g-to-zfs-fuse-for-f...
| Here's a table of results comparing the write, rewrite and read speeds
| of each.
| Write Rewrite Read
| JFS (kernel) 39 25 54
| XFS (kernel) 31 16 30
| NTFS-3G (FUSE) 31 14 30
| ZFS (FUSE) 18 10 28| So that's pretty conclusive, we have a FUSE filesystem (which
| also claims to not be optimised) which can pretty much match an
| in-kernel filesystem.Jest tylko jeden drobny problem - to jest mikrobenchmark. A mikrobenchmarki
maja to do siebie, ze nijak nie mozna na ich podstawie wyciagac wnioskow
makro. Nie do tego sluza.Innymi slowy - znajdz mi wyniki benchmarku _aplikacyjnego_, to pogadamy.
Nie muszę. Nie twierdzę, że ntfs3g jest szybszy/równie szybki jak
filesystemy w kernelu. Do utrzymania tezy o niebezsensownej wydajności
wystarczy tego typu microbenchmark.
[...]
| Litosci, to nawet funkcji mmap(2) nie obsluguje.
| więc nie byłbym stuprocentowo pewien, że status rozwoju btrfs z czerwca
| wciąż jest aktualny. ;-)Kod kodowi nierowny.
Poprawka. ZFS ma prawdopodobnie kilkadziesiąt tys. linii kodu a btrfs
już przekroczył 10K. Że obsysa to oczywiste, bo w Linuksie najwyraźniej
wszystko obsysa. ;-)
| | To nie jest FUD. Derived work nie jest akceptowana
| | Co nijak ma sie do tematu. Zaprzeczanie temu to linuksiany FUD o ZFS
| | numer jeden.| Linux nie akceptuje derived work wydanej na niekompatybilnej licencji.
| To jest arbitralna decyzja Linusa, nie umocowana w licencji.
| To jest twój FUD lub niezorientowanie w sytuacji.
Uznanie ZFS-a za derived work - czyli przyjecie punktu widzenia RMS-a
lub odrzucenie go - to arbitralna decyzja Linuksa.
Podobnie jak nieużywanie linuksowych sterowników w Solarisie jest
arbitralną decyzją Suna. Jonathan Shwartz tutaj:
http://blogs.sun.com/jonathan/entry/one_plus_one_is_fifty
jednak się powstrzymują...
Sami FUDziarze w tym IT.
| Zarówno CDDL jak i GPL to licencje copyleftowe. Tego typu licencje nie
| są z reguły kompatybilne i nie pozwalają na swobodną wymianę kodu
| pomiędzy nimi.Port ZFS-a nie wymaga swobodnej wymiany kodu.
Porty sterowników tym bardziej.
| Nie pamietam, co bylo z XFS-em. Bardzo mozliwe, ze Linuksowy kernel
| byl wtedy tak bardzo w epoce Bacha lupanego, ze trzeba mu trzeba bylo
| zrobic fast forward, stad zmiany.| Wiem natomiast, jak wygladal port ZFS-a do FreeBSD. Zmiany w kernelu
| byly minimalne.| Możliwe. Możliwe, że w Linuksie by nie były i możliwe,
Malo prawdopodobne. XFS byl portowany gdzies w czasach 2.4, kiedy Linux
technologicznie byl w poczatkach lat dziewiecdziesiatych. Obecnie jest
troche lepiej.
systemem plików w Linuksie to jego integracja była koszmarem (disaster).
ZFS to ma być zupełnie inna para kaloszy.
BTW - nie twierdzę, że gdyby nie problemy licencyjne to port ZFS by nie
powstał. Jestem nieomal pewien, że by powstał.
[...]
| Zdaniem RMS-a - wrecz przeciwnie.
| Zdanie RMS-a nie ma mocy prawnej.
Nie sadze, zeby fanboyom GNU robilo to roznice.
Z okazji ostatniej zadymy przy okazji wydania v3 można było się
zorientować kto jest fanboyem. Ja się spotkałem głównie z jednym,
faktycznie członkiem FSF.
| Nie, nie moze sie zmienic - 'derived work' nie ma zwiazku z przystosowaniem,
| chyba ze przystosowanie uzywa cudzego kodu. Linux nie musi zostac dostosowany,
| wiec i tak nie ma to znaczenia.| Andy Morton twierdzi inaczej i jestem skłonny przedłożyć opinię
| człowieka, który zjadł zęby na linuksianych filesystemach nad twoją.Tyle tylko, ze ja mam cos na poparcie swojej opinii, a Andy - nie.
Oczywiście Andy nie jest świadom, że ZFS jest właśnie integrowany z
MacOS i FreeBSD. Ingo też nie ma o tym pojęcia. W sumie to sami
badziewiarze w tym Linuksie i nijak nie mogę zrozumieć dlaczego Sun się
im próbuje podlizać. ;-)
[...]
| FUD sial chociazby Alan Cox.
| Z grubsza znam jego interpretację GPL i mniej więcej sobie wyobrażam co
| również nie ma mocy prawnej. Linus jest tego w 100% świadom.Wiec jednego linuksiarza siejacego FUD juz kojarzysz.
Nie zgadzam się z tobą. Jego interpretacja może być bardziej radykalna
od tego co mnie najbardziej przekonuje, co wszakże nie oznacza że ta
interpretacja jest FUDem. Podobno prawo Niemieckie interpretuje GPLv2 w
taki sposób, że tivoizacja jest zabroniona. Podobno robi to na
podstawie "intent" (intencja, duch itp) licencji. Podobno prawo USA już
tego tak nie interpretuje. Alan jest z UK i możliwe, że jego
interpretacja jest w UK zupełnie zasadna.
[...]
| Argumentem moglaby byc, ale Linuksa przelicencjonowac sie nie da. Natomiast
| przelicencjonowanie ZFS-a mialoby ta mila dla Linuksa ceche, ze utrudniloby
| wspolprace z FreeBSD i Apple, ktore jakas tam konkurencja zawsze sa.| Możliwe, ale wytłumacz mi dlaczego blisko 4G linii kodu sterowników nie
| miałoby być warte tej ceny?Zrob maly eksperyment. W sumie nie tyle eksperyment, ile sprobuj
przeprowadzic male szacowanie. Wez kod Linuksowych driverow i:1. Wywal czesc, ktora jest dla Suna bezuzyteczna z definicji - konkretnie
wszystkie sterowniki do urzadzen specyficznych dla architektur innych
niz x86/amd64,
Nie muszę. Sterowniki na różne architektury z reguły dzielą kod.
2. Wywal kod obslugujacy sprzet, do ktorego Solaris sterowniki juz ma,
Czyli klawiaturę i mysz? OK
3. Wywal kod do sprzetu, na ktorym nikt nie bedzie probowal Solarisa
uzywac - wszystkie te isowe sieciowki, drivery do Creative Rio itd.Nastepnie popatrz na te 10% pozostalego kodu
10% ?
i zastanow sie, jak go
przeportowac pod system, ktory nie tylko ma zupelnie inne API, ale
pewne podstawowe rzeczy dzialaja tam na zupelnie innej _zasadzie_.
Nie muszę. Programiści Suna się nad tym zastanawiają i najwyraźniej
mają już rozwiązanie. Się to nawet jakoś nazywa, ale zapomniałem jak,
bo tylko raz mi przed oczami mignęło.
Naprawdę nie chce mi się szukać, więc w razie czego będę udawał że
kłamię. ;-)
Jak przerobic procedury obslugi przerwan i synchronizacje tak, zeby
'pasowaly' do systemu uzywajacego interrupt threads[1], na przyklad.[1]. Takie prawdziwe interrupt threads, nie to cos, czego dorobil sie
niedawno Linux i co nie ma podstawowej cechy interrupt threads -
- zasadniczego uproszczenia lockingu.
Kombinują jakąś warstwę zgodności. Ani się na tym znam ani to dobrze
pamiętam, więc niech będzie że kłamię.
| | Nie mogliby, bo v2 - na ktorej jest Linux - nie jest kompatybilna z v3.
| | wprost w ich FAQ dotyczącym v3. GPL jest wstecznie kompatybilna.| Jakby byla wstecznie kompatybilna, to Linus moglby zmienic licencje kernela.
| A nie moze.| Może. Musiałby przyjmować jedynie kod na licencji "GPLv2 or later" i
| stopniowo zastępować kawałki na GPLv2. W momencie gdy całość kodu jest
| na licencji "GPLv2 or later" można wydać Linuksa na v3.| Innymi slowy, kiedy caly kernel zostanie przepisany od zera - w sensie,
| wszystkie kawalki na GPLv2 zostana zastapione kodem na GPLv2 lub
| nowszymDokładnie, a tych kawałków jest zadziwiająco niewiele.
Spieralbym sie, ale nie chce mi sie szukac argumentow. Czas pokaze.
| - mozna bedzie wydac Linuksa na GPLv3. Innymi slowy, zmiana
| licencji wymaga przepisania kernela. Jakos niespecjalnie to jest sprzeczneNie wymaga. Wymaga znaczącej biurokracji i zadymy socjalnej plus
przepisanie kawałków kodu wydanego konkretnie na GPLv2.
J/w.
| Sun może zrobić to samo, tzn wziąć sobie linuksowe sterowniki a swoje
| modyfikacje wydać na "GPLv2 or later".| Tylko ze wtedy musialby licencjonowac Solarisa jako GPLv2 (or later),
| a nie v3.Poprawka. Sun może sobie wziąć sterowniki i je wydać od razu na v3.
Zabieg z v2 or later nie jest konieczny.
Nie moze, jesli sterowniki sa na v2, bez 'or later'. Czyli j/w.
| Poza tym
| v3 jakoś podobno rozjaśnia tę sytuację.| W ktorym miejscu?
Wprowadza pojęcie "standard interface".
I co to niby rozjasnia?
| Jest roznica miedzy 'zupelnie przyzwoicie jak na okazjonalny dostep
| do nosnika' i wydajnoscia w roli glownego filesystemu.| No jest, tyle że nie zawsze tę stronę co by się człowiek spodziewał. ;-)
| http://www.csamuel.org/2007/04/25/comparing-ntfs-3g-to-zfs-fuse-for-f...
| Here's a table of results comparing the write, rewrite and read speeds
| of each.
| Write Rewrite Read
| JFS (kernel) 39 25 54
| XFS (kernel) 31 16 30
| NTFS-3G (FUSE) 31 14 30
| ZFS (FUSE) 18 10 28| So that's pretty conclusive, we have a FUSE filesystem (which
| also claims to not be optimised) which can pretty much match an
| in-kernel filesystem.| Jest tylko jeden drobny problem - to jest mikrobenchmark. A mikrobenchmarki
| maja to do siebie, ze nijak nie mozna na ich podstawie wyciagac wnioskow
| makro. Nie do tego sluza.| Innymi slowy - znajdz mi wyniki benchmarku _aplikacyjnego_, to pogadamy.
Nie muszę. Nie twierdzę, że ntfs3g jest szybszy/równie szybki jak
filesystemy w kernelu. Do utrzymania tezy o niebezsensownej wydajności
wystarczy tego typu microbenchmark.
Nie zrozumielismy sie. Nie chodzi o to, ze wnioski z mikrobenchmarku moga
sie _troche_ nie zgadzac z wnioskami z benchmarku aplikacyjnego. Chodzi
mi o to, ze one moga sie nie zgadzac _w ogole_ - w mikrobenchmarku A bedzie
dwa razy szybsze od B, a w aplikacyjnym - na odwrot.
| Litosci, to nawet funkcji mmap(2) nie obsluguje.
| więc nie byłbym stuprocentowo pewien, że status rozwoju btrfs z czerwca
| wciąż jest aktualny. ;-)| Kod kodowi nierowny.
Poprawka. ZFS ma prawdopodobnie kilkadziesiąt tys. linii kodu a btrfs
już przekroczył 10K.
Kod kodowi nierowny.
Że obsysa to oczywiste, bo w Linuksie najwyraźniej
wszystko obsysa. ;-)
Obsysa, bo poki co nie dziala.
| | | To nie jest FUD. Derived work nie jest akceptowana
| | Co nijak ma sie do tematu. Zaprzeczanie temu to linuksiany FUD o ZFS
| | numer jeden.| | Linux nie akceptuje derived work wydanej na niekompatybilnej licencji.
| To jest arbitralna decyzja Linusa, nie umocowana w licencji.
| To jest twój FUD lub niezorientowanie w sytuacji.
| Uznanie ZFS-a za derived work - czyli przyjecie punktu widzenia RMS-a
| lub odrzucenie go - to arbitralna decyzja Linuksa.Podobnie jak nieużywanie linuksowych sterowników w Solarisie jest
arbitralną decyzją Suna. Jonathan Shwartz tutaj:
http://blogs.sun.com/jonathan/entry/one_plus_one_is_fifty
jednak się powstrzymują...
Owszem. Sun ma troche za duzo do stracenia, zeby igrac z RMS-em.
| Zarówno CDDL jak i GPL to licencje copyleftowe. Tego typu licencje nie
| są z reguły kompatybilne i nie pozwalają na swobodną wymianę kodu
| pomiędzy nimi.| Port ZFS-a nie wymaga swobodnej wymiany kodu.
Porty sterowników tym bardziej.
Jesli chcesz ich uzywac przez jakas 'warstwe emulacji' - mozliwe. Jesli
nie, to popatrz na port dowolnego sterownika miedzy dowolnymi popularnymi
systemami. Sprobuj znalezc taki, ktory nie wiazal sie z przepisaniem
sporej czesci sterownika.
| Nie pamietam, co bylo z XFS-em. Bardzo mozliwe, ze Linuksowy kernel
| byl wtedy tak bardzo w epoce Bacha lupanego, ze trzeba mu trzeba bylo
| zrobic fast forward, stad zmiany.| Wiem natomiast, jak wygladal port ZFS-a do FreeBSD. Zmiany w kernelu
| byly minimalne.| Możliwe. Możliwe, że w Linuksie by nie były i możliwe,
| Malo prawdopodobne. XFS byl portowany gdzies w czasach 2.4, kiedy Linux
| technologicznie byl w poczatkach lat dziewiecdziesiatych. Obecnie jest
| troche lepiej.
systemem plików w Linuksie to jego integracja była koszmarem (disaster).
ZFS to ma być zupełnie inna para kaloszy.
BTW - nie twierdzę, że gdyby nie problemy licencyjne to port ZFS by nie
powstał. Jestem nieomal pewien, że by powstał.
Moment, uzgodnijmy cos.
1. Czy wedlug ciebie te problemy licencyjne faktycznie istnieja, czy nie?
Jesli tak, to dlaczego?
2. Czy wedlug ciebie Linus i s-ka zdaja sobie z tego sprawe?
| Nie, nie moze sie zmienic - 'derived work' nie ma zwiazku z przystosowaniem,
| chyba ze przystosowanie uzywa cudzego kodu. Linux nie musi zostac dostosowany,
| wiec i tak nie ma to znaczenia.| Andy Morton twierdzi inaczej i jestem skłonny przedłożyć opinię
| człowieka, który zjadł zęby na linuksianych filesystemach nad twoją.| Tyle tylko, ze ja mam cos na poparcie swojej opinii, a Andy - nie.
Oczywiście Andy nie jest świadom, że ZFS jest właśnie integrowany z
MacOS i FreeBSD. Ingo też nie ma o tym pojęcia. W sumie to sami
badziewiarze w tym Linuksie i nijak nie mogę zrozumieć dlaczego Sun się
im próbuje podlizać. ;-)
Nie twierdze, ze nie jest swiadom. Twierdze, ze opowiada bzdury,
i podpieram to konkretnym przypadkiem portu ZFS-a. Andy Morton nie
podpiera swojej opinii niczym poza swoim glebokim przekonaniem.
| FUD sial chociazby Alan Cox.
| Z grubsza znam jego interpretację GPL i mniej więcej sobie wyobrażam co
| również nie ma mocy prawnej. Linus jest tego w 100% świadom.| Wiec jednego linuksiarza siejacego FUD juz kojarzysz.
Nie zgadzam się z tobą. Jego interpretacja może być bardziej radykalna
od tego co mnie najbardziej przekonuje, co wszakże nie oznacza że ta
interpretacja jest FUDem. Podobno prawo Niemieckie interpretuje GPLv2 w
taki sposób, że tivoizacja jest zabroniona. Podobno robi to na
podstawie "intent" (intencja, duch itp) licencji. Podobno prawo USA już
tego tak nie interpretuje. Alan jest z UK i możliwe, że jego
interpretacja jest w UK zupełnie zasadna.
Znasz pojecie 'brzytwa Ockhama'?
| Argumentem moglaby byc, ale Linuksa przelicencjonowac sie nie da. Natomiast
| przelicencjonowanie ZFS-a mialoby ta mila dla Linuksa ceche, ze utrudniloby
| wspolprace z FreeBSD i Apple, ktore jakas tam konkurencja zawsze sa.| Możliwe, ale wytłumacz mi dlaczego blisko 4G linii kodu sterowników nie
| miałoby być warte tej ceny?| Zrob maly eksperyment. W sumie nie tyle eksperyment, ile sprobuj
| przeprowadzic male szacowanie. Wez kod Linuksowych driverow i:| 1. Wywal czesc, ktora jest dla Suna bezuzyteczna z definicji - konkretnie
| wszystkie sterowniki do urzadzen specyficznych dla architektur innych
| niz x86/amd64,Nie muszę. Sterowniki na różne architektury z reguły dzielą kod.
Pisze o tych, ktore nie dziela.
| 2. Wywal kod obslugujacy sprzet, do ktorego Solaris sterowniki juz ma,
Czyli klawiaturę i mysz? OK
Czyli wiekszosc kart sieciowych, kontrolerow dyskow, tego typu rzeczy.
| 3. Wywal kod do sprzetu, na ktorym nikt nie bedzie probowal Solarisa
| uzywac - wszystkie te isowe sieciowki, drivery do Creative Rio itd.| Nastepnie popatrz na te 10% pozostalego kodu
10% ?
No, rozny badziew na USB pominalem. Moze 20%.
| i zastanow sie, jak go
| przeportowac pod system, ktory nie tylko ma zupelnie inne API, ale
| pewne podstawowe rzeczy dzialaja tam na zupelnie innej _zasadzie_.Nie muszę. Programiści Suna się nad tym zastanawiają i najwyraźniej
mają już rozwiązanie. Się to nawet jakoś nazywa, ale zapomniałem jak,
bo tylko raz mi przed oczami mignęło.
Programisci FreeBSD tez maja. Co nie zmienia faktu, ze taki port jest,
delikatnie mowiac, 'suboptymalny'.
(Opowiadanie techniczne z benchmarkami. Część III - ostatnia)
Motto:"First things first"
(Najpierw rzeczy podstawowe)
Streszczenie poprzednich odcinków:
Bohater opowiadania zauważył zdecydowanie wolniejszą pracę
kilku aplikacji pod X-ami (w tym mplayera, xine, i innych)
przy każdym jądrze 2.6.x. X-y przy kernelu 2.4.x zdawały się
być wielokrotnie "szybsze". Przeprowadził setki pomiarów dowodzących,
że jego obserwacje nie są złudzeniem. Testy prowadził na kilku
komputerach i wyniki się powtarzały. Jednak mikrobenchmarki i testy
"czystych" X-ów nie potwierdzały, że kernel 2.6 jest znacznie
wolniejszy. Próby zlokalizowania przyczyn takiego stanu rzeczy
świata linuksa" z prośbą o pomoc......
CZĘŚĆ III
=========
za dużo to nikt tego nie przeczyta. Jak pominę coś co może
naprowadzić na ślad jakiegoś guru, to też źle. Z drugiej strony
to dziwne: tyle razy googlałem szukając złej wydajności X,
wolnych X-ów pod 2.6, wrong, poor, bad X performance w połączeniu
z jądrem 2.6 - i nic co byłoby podobne do mojego problemu
nie "wypluwało" mi. Czyżbym źle szukał? Pewnie tak. Ale jakie
pytanie należało zadać?. Klasyka - nie wiem czego nie wiem.
Najpierw stworzyłem wspólny szkielet dla wszystkich postów. Strace
i jego dziwne wyniki, był problemem odrębnym, więc odłożyłem sobie
go na później. Myślę sobie: najważniejsze jest udokumentowanie,
że rzeczywiście jest problem. Do tego najlepiej nadaje się top.
Taaaaak! Top załatwia mi dwa problemy. Dowodzi, że wykorzystanie
CPU przez X-y jest dużo wieksze na 2.6 niż na 2.4, że kurczy się
(albo zupełnie brakuje) czas procesora, że rośnie LA, a poza tym
pokazuje (przynajmniej z grubsza), że gubienie ramek np. w mplayerze
nie wynika z uruchomionych innych aplikacji (po prostu pokazuje,
że innych aplikacji nie ma). Potem już był problem. Większość
pozostałych wyników tylko potwiedzała wskazania topa. No może
jeszcze dorzucić /proc/PID/stat? Każdy guru chce dwie rzeczy
- pomyślałem - koniguracje i logi. Tak to jest punkt zaczepienia!
Tylko jak np. bedę pisał do samego "Linusa" czyli na listę
zalączyć? Pliki .config z kompilacji jądra? Toż to ich było
debugowanie, że włączyłem optymalizacje pod procesor i to wszystko
nie zmieniło wyniku. To sprowadza się do tego, że wszystko jedno
który wyślę. Zerknąłem na FAQ nadwornej grupy Linusa. Już wiem
nieproszony w ogóle nie mam wysyłać konfiguracji, albo tylko
istotne opcje. Tylko które są istotne? Dobra, maila dla kernelowców
dokończę później. Najwyżej dopiszę, że testowałem niemal
wszystkie jądra waniliowe i dystrybucyjne od 2.4.21 aż do 2.6.9
i tyle.
Najmniej poderzany był mplayer (bo przecież xine też wariował)
więc developerów mplayera bedziemy niepokoić na końcu.
To w takim razie pierwszy mail napiszę na wiki.x.org. Tu będzie
łatwiej - zgadywałem. Konfiguracja prosta - robiłem tylko kilka
zmian które łatwo opisać bez obszernego cytowania. Logi są krótkie
i nie zawierają żadnych errorów - prościzna. Wystarczy wrzucić
jeden. Na wszelki wypadek sprawdzę czy nie ma różnic pomiędzy logami
pod kernelem 2.6.x i 2.4.x - pomyślałem.
Do pokoju weszła żona z pościelą. Rzuciła na sofę poduszkę i kołdrę
i mówi:
- Wolisz spać z komputerem to masz tu pościel.
- Ja już kończę. Jeszcze tylko dokończę jednego maila
- Zawsze tak mówisz - rzuciła przez ramię i wyszła.
O co jej może chodzić? Co ja jej takiego znowu zrobiłem?
Komputerk zapasowy jej złożyłem, dostep do Internetu ma.
Zawsze kładłem się cichutko, by jej nie budzić...
Na prawdę nie wiem o co jej może chodzić....
Mało mam poroblemów? OK - myślę sobie - problemy trzeba
skolejkować. Utworzymy kolejkę FIFO i problem "żona" wrzucimy
na koniec kolejki.
Wrociłem do pracy. Sprawdźmy na wszelki wypadek różnice pomiędzy
logami /var/log/xorg.0.log dla 2.6 i 2.4 - pomyślałem ponownie:
$diff xorg.0.log.2.6 xorg.0.log.2.4
13c13
< (==) Log file: "/var/log/Xorg.0.log", Time: Mon Nov 22 17:20:56 2004
---
(==) Log file: "/var/log/Xorg.0.log", Time: Mon Nov 22 17:27:11 2004
604c604
< (WW) NV(0): Failed to set up write-combining range (0xe3000000,0x1000000)
---
(==) NV(0): Write-combining range (0xe3000000,0x1000000)
Hmmmmm....... Jakies ostrzeżenie....
Tknęło mnie złe przczucie. W logach kernela są setki warningów, i nikt
się tym nie przejmuje, a tu jeden. Coś mi to kurcze mówi.......
"write-combining range" dzwoniło mi po głowie....
write-combining range - gdzie to ja już widziałem?....
Chyba gdzieś w /proc.... Jeeeeeeeest..... Kuuuu*... Wymksnęło mi się
po raz pierwszy od czasu wczesnej młodości, kiedy to dostałem
po uszach od ojca za niecenzuralne słowo (co jak widać uleczyło mnie
na długo). /proc/mtrr!!!!!!!!!..... Szlag by trafił.....
Potem wszystko już potoczyło się błyskawicznie. Teraz już wiedziałem
o co pytać google i czego szukac na wiki.x.org.
Jeeest... Dwa tygodnie po rozpoczęciu moich badań....3.10.2004
post z tematem "MTRRs not working in 2.6 linux kernels?"
#######################
When I try to use the application tvtime under Xorg 6.8.1 with Linux
kernel 2.6.7, I get very choppy framerates; tvtime indicates that it is
only getting about 50 MB/s for blitting to the screen. With the same
version of Xorg and Linux kernel 2.4.22, I get smooth play, and tvtime
indicates that it gets about 150 MB/s for blitting to screen. I made
sure DRI wasn't playing a role in this by rmmod'ing the agpgart module
before starting X.
#######################
Kurcze pieczone - tym razem zakląłem mniej szpetnie - przecież facet
opisuje dokładnie mój problem tylko nie ma słowa o X-ach. Co więcej,
jego bardziej boli tvtime. Noooo... a ostatnio ktoś na grupie pcol
narzekał że tvtime zżera procka...
#######################
Lastly, in the X.org log when running a 2.6 kernel the following line is
displayed:
(WW) RADEON(0): Failed to set up write-combining range (0xe8000000,0x1000000)
while under 2.4 the following line is displayed:
(==) RADEON(0): Write-combining range (0xe8000000,0x1000000)
I am running a P4 at 1.8 Ghz Laptop with an AGP 4x Radeon 7500 and 16 MB
of VRAM; it has 256 MB of system memory, which makes the third line of
/proc/mtrr in the 2.6 kernels look wrong to my untrained eyes.
#######################
A wiąc to nie tylko problem kert nvidia czy savage, które testowałem
Gość ma Radeona i do tego P4 1.8GHz, ja kręcę... i mu haczy....
Odpowiedź którą otrzymał (prosta i konkretna) mówiła wszystko:
##############################
Dave Jones davej at redhat.com
Mon Oct 4 10:40:39 PDT 2004
Of note is the difference in /proc/mtrr between 2.6 and 2.4
kernels:
in 2.4, it contains only
reg00: base=0x00000000 ( 0MB), size= 256MB: write-back, count=1
reg01: base=0x0ff80000 ( 255MB), size= 512KB: uncachable, count=1
while in 2.6 it contains
reg00: base=0x00000000 ( 0MB), size= 256MB: write-back, count=1
reg01: base=0x0ff80000 ( 255MB), size= 512KB: uncachable, count=1
reg02: base=0xe8000000 (3712MB), size= 2MB: write-combining, count=1
VesaFB creates an MTRR in 2.6. The problem is it only creates one
big enough to cover x resolution * y resolution * depth, which is
nearly always less than the size of the video ram.
Perhaps this is a kernel issue and should be posted to the kernel list?
Any help would be appreciated.
Until someone either removes that from teh kernel, or fixes it to size
ram properly, you can boot with a vesafb=nomtrr option iirc.
Dave
##############################
A więc problem wygląda tak - rozumowałem -
W kernelu 2.4 vesafb nie używał MTRR a 2.6 używa i robi to źle,
ustawia zły rozmiar, X-y startują i kupa blada bo bez MTRR.
Ajjajjjajj - zjęczałem - tak lubię małe literki na ekranie
A więc jednak błąd jądra (pomyślałem w swej naiwności - o ja głupi).
Pozostaje jeszcze pytanie Jonathana: czy ktoś to w ogóle zgłosił
developerom kernela?
Ale jest rada Dave'a. Szybko dopisałem vesa=nomtrr do append
w /etc/lilo.conf, potem lilo, błyskawiczny reboocik...
I kupa... nie działa..... Ale chociaż jest ślad..
Sięgnąłem do dokumentacji jądra, jest....
less /usr/src/linux/Documentation/vesafb.txt
szybkie przeszukanie na string /mtrr potem /option
i już wiedziałem, że prawidłowo należy podać opcję tak:
"video=vesafb:nomtrr"
I znowu drżącymi palcami vi /etc/lilo.conf, lilo, shutdown -r 0 ...
Czekajac aż maszyna się podniesie kręciłem się jak Jaś Fasola
gdy mu dziecko w wózku odleciało z balonikami...
Z dwa razy walnąłem się w haśle... startx...
nerwowo wstukałem "mplayer -benchmark -chapter 3-3 dvd://"
Oooooo.... już na oko widać, że idzie płynnie....
Jest wynik.... 0% ramek straconych... Kurcze z podniecenia
zapomniałem włączyć pomiary. Jeszcze raz. Teraz z topem,
na jądrze 2.6 wykorzystanie CPU o 20% większe.... Zdecydowanie
to nie jest 3000% większe. Przy tym wzroście funkcjonalności kernela
można to zakceptować ....
Gdzie popełniłem błąd - myślałem - jak testowałem konfigurowałem
i kompilowałem, wywaliłem wszystkie frame buffory za wyjątkiem
vesafb. Rozumowałem tak: w 2.4 był i działał dobrze więc to nie może
być przyczyna... A okazało się, że jednak była!
Z drugiej strony przecież czytałem dokumentację mplayera. Jak byk
piszą chłopaki w punkcie 2.3.1:
###########################
2.3.1. Ustawianie MTRR
Jest WYSOCE wskazane, aby sprawdzić, czy rejestry MTRR są ...
więcej »
zawartosc beckup
======= BEGIN OF BACKTRACE =====
[0] kadu [0x812d791]
[1] /lib/i686/libpthread.so.0 [0x4002d5ce]
[2] /lib/i686/libc.so.6 [0x408503b8]
======= END OF BACKTRACE ======
static modules:
> docking
> notify
> sound
loaded modules:
Kod:KK <misc.cpp:243> /usr/local/bin/../share/kadu/themes/emoticons/gadu-gadu
KK <tabbar.cpp:101> virtual QSize KaduTabBar::sizeHint() const
KK <tabbar.cpp:101> virtual QSize KaduTabBar::sizeHint() const
KK <tabbar.cpp:118> virtual QSize KaduTabBar::minimumSizeHint() const
KK <tabbar.cpp:101> virtual QSize KaduTabBar::sizeHint() const
KK <tabbar.cpp:101> virtual QSize KaduTabBar::sizeHint() const
KK <kadu.cpp:504> void Kadu::createToolBar()
KK <kadu.cpp:74> ToolBar::ToolBar(QMainWindow*)
KK <kadu.cpp:98> void ToolBar::createControls()
KK <kadu.cpp:107> void ToolBar::createControls() end
KK <kadu.cpp:87> ToolBar::ToolBar(QMainWindow*) end
KK <kadu.cpp:509> void Kadu::createToolBar() end
KK <kadu.cpp:902> void Kadu::refreshGroupTabBar()
KK <kadu.cpp:919> 2 groups found: GG,SMS
KK <tabbar.cpp:169> virtual int KaduTabBar::insertTab(QTab*, int)
KK <tabbar.cpp:51> virtual void KaduTabBar::layoutTabs()
KK <tabbar.cpp:245> void KaduTabBar::updateArrowButtonsVert()
KK <tabbar.cpp:211> void KaduTabBar::makeVisibleVert(QTab*)
KK <tabbar.cpp:51> virtual void KaduTabBar::layoutTabs()
KK <tabbar.cpp:169> virtual int KaduTabBar::insertTab(QTab*, int)
KK <tabbar.cpp:51> virtual void KaduTabBar::layoutTabs()
KK <tabbar.cpp:245> void KaduTabBar::updateArrowButtonsVert()
KK <tabbar.cpp:211> void KaduTabBar::makeVisibleVert(QTab*)
KK <tabbar.cpp:51> virtual void KaduTabBar::layoutTabs()
KK <kadu.cpp:945> 3 group tabs
KK <kadu.cpp:954> void Kadu::setActiveGroup(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:627> void UserBox::addUser(const QString&)
KK <userbox.cpp:742> static void UserBox::all_refresh()
KK <userbox.cpp:465> void UserBox::refresh()
KK <userbox.cpp:622> void UserBox::refresh() end
KK <kadu.cpp:975> void Kadu::setActiveGroup(const QString&) end
KK <kadu.cpp:949> void Kadu::refreshGroupTabBar() end
KK <tabbar.cpp:211> void KaduTabBar::makeVisibleVert(QTab*)
KK <tabbar.cpp:51> virtual void KaduTabBar::layoutTabs()
KK <kadu.cpp:499> Kadu::Kadu(QWidget*, const char*) end
KK <modules.cpp:239> ModulesManager::ModulesManager()
KK <misc.cpp:1366> void IconsManager::registerMenuItem(QMenuData*, const QS
tring&, const QString&)
KK <misc.cpp:1373> void IconsManager::registerMenuItem(QMenuData*, const QS
tring&, const QString&) end
KK <modules.cpp:539> bool ModulesManager::activateModule(const QString&): 'do
cking'
KK <misc.cpp:243> /usr/local/bin/../share/kadu/modules/docking.desc
KK <config_file.cpp:28> void ConfigFile::read(): /usr/local/bin/../share/kadu/mo
dules/docking.desc
KK <config_file.cpp:68> void ConfigFile::read() end
KK <modules.cpp:506> bool ModulesManager::conflictsWithLoaded(const QString&,
const ModuleInfo&) const
KK <modules.cpp:532> bool ModulesManager::conflictsWithLoaded(const QString&,
const ModuleInfo&) const end
KK <modules.cpp:354> bool ModulesManager::satisfyModuleDependencies(const Mod
uleInfo&)
KK <modules.cpp:375> bool ModulesManager::satisfyModuleDependencies(const Mod
uleInfo&) end
KK <misc.cpp:243> /usr/local/bin/../share/kadu/modules/translations/dockin
g_pl
KK <docking/docking.cpp:39> DockingManager::DockingManager(QObject*, const c
har*)
KK <docking/docking.cpp:57> DockingManager::DockingManager(QObject*, const c
har*) end
KK <modules.cpp:381> void ModulesManager::incDependenciesUsageCount(const Mod
uleInfo&): Modu³ obs³ugi ikony w tray'u
KK <modules.cpp:387> void ModulesManager::incDependenciesUsageCount(const Mod
uleInfo&) end
KK <modules.cpp:613> bool ModulesManager::activateModule(const QString&) end
KK <modules.cpp:539> bool ModulesManager::activateModule(const QString&): 'no
tify'
KK <misc.cpp:243> /usr/local/bin/../share/kadu/modules/notify.desc
KK <config_file.cpp:28> void ConfigFile::read(): /usr/local/bin/../share/kadu/mo
dules/notify.desc
KK <config_file.cpp:68> void ConfigFile::read() end
KK <modules.cpp:506> bool ModulesManager::conflictsWithLoaded(const QString&,
const ModuleInfo&) const
KK <modules.cpp:532> bool ModulesManager::conflictsWithLoaded(const QString&,
const ModuleInfo&) const end
KK <modules.cpp:354> bool ModulesManager::satisfyModuleDependencies(const Mod
uleInfo&)
KK <modules.cpp:375> bool ModulesManager::satisfyModuleDependencies(const Mod
uleInfo&) end
KK <misc.cpp:243> /usr/local/bin/../share/kadu/modules/translations/notify
_pl
KK <notify/notify.cpp:20> int notify_init()
KK <notify/notify.cpp:37> Notify::Notify(QObject*, const char*)
KK <notify/notify_slots.cpp:76> NotifySlots::NotifySlots(QObject*, const char*)
KK <notify/notify_slots.cpp:77> NotifySlots::NotifySlots(QObject*, const char*)
end
KK <config_dialog.cpp:1017> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&)
KK <config_dialog.cpp:1031> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&):
Slot connected:: 1_Right()
KK <config_dialog.cpp:1017> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&)
KK <config_dialog.cpp:1031> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&):
Slot connected:: 1_Left()
KK <config_dialog.cpp:1017> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&)
KK <config_dialog.cpp:1031> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&):
Slot connected:: 1_Right2(QListBoxItem *)
KK <config_dialog.cpp:1017> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&)
KK <config_dialog.cpp:1031> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&):
Slot connected:: 1_Left2(QListBoxItem *)
KK <notify/notify.cpp:108> Notify::Notify(QObject*, const char*) end
KK <notify/notify.cpp:23> int notify_init() end
KK <modules.cpp:381> void ModulesManager::incDependenciesUsageCount(const Mod
uleInfo&): Modu³ powiadamiania u¿ytkownika o zdarzeniach
KK <modules.cpp:387> void ModulesManager::incDependenciesUsageCount(const Mod
uleInfo&) end
KK <modules.cpp:613> bool ModulesManager::activateModule(const QString&) end
KK <modules.cpp:539> bool ModulesManager::activateModule(const QString&): 'so
und'
KK <misc.cpp:243> /usr/local/bin/../share/kadu/modules/sound.desc
KK <config_file.cpp:28> void ConfigFile::read(): /usr/local/bin/../share/kadu/mo
dules/sound.desc
KK <config_file.cpp:68> void ConfigFile::read() end
KK <modules.cpp:506> bool ModulesManager::conflictsWithLoaded(const QString&,
const ModuleInfo&) const
KK <modules.cpp:532> bool ModulesManager::conflictsWithLoaded(const QString&,
const ModuleInfo&) const end
KK <modules.cpp:354> bool ModulesManager::satisfyModuleDependencies(const Mod
uleInfo&)
KK <modules.cpp:375> bool ModulesManager::satisfyModuleDependencies(const Mod
uleInfo&) end
KK <misc.cpp:243> /usr/local/bin/../share/kadu/modules/translations/sound_
pl
KK <sound/sound.cpp:38> int sound_init()
KK <sound/sound.cpp:187> SoundManager::SoundManager(const QString&, const
QString&)
KK <sound/sound_slots.cpp:23> SoundSlots::SoundSlots(QObject*, const char*)
KK <misc.cpp:1366> void IconsManager::registerMenuItem(QMenuData*, const QS
tring&, const QString&)
KK <sound/sound.cpp:760> virtual void SoundPlayThread::run()
KK <misc.cpp:1373> void IconsManager::registerMenuItem(QMenuData*, const QS
tring&, const QString&) end
KK <kadu.cpp:132> static void ToolBar::registerButton(const QString&, cons
t QString&, QObject*, const char*, int, const char*)
KK <kadu.cpp:98> void ToolBar::createControls()
KK <kadu.cpp:107> void ToolBar::createControls() end
KK <kadu.cpp:152> static void ToolBar::registerButton(const QString&, cons
t QString&, QObject*, const char*, int, const char*) end
KK <sound/sound_slots.cpp:54> SoundSlots::SoundSlots(QObject*, const char*) en
d
KK <config_dialog.cpp:1017> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&)
KK <config_dialog.cpp:1031> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&):
Slot connected:: 1soundPlayer(bool)
KK <config_dialog.cpp:1017> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&)
KK <config_dialog.cpp:1031> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&):
Slot connected:: 1chooseSoundFile()
KK <config_dialog.cpp:1017> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&)
KK <config_dialog.cpp:1031> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&):
Slot connected:: 1clearSoundFile()
KK <config_dialog.cpp:1017> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&)
KK <config_dialog.cpp:1031> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&):
Slot connected:: 1testSoundFile()
KK <config_dialog.cpp:1017> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&)
KK <config_dialog.cpp:1031> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&):
Slot connected:: 1chooseSoundTheme(const QString&)
KK <config_dialog.cpp:1017> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&)
KK <config_dialog.cpp:1031> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&):
Slot connected:: 1selectedPaths(const QStringList&)
KK <config_dialog.cpp:1017> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&)
KK <config_dialog.cpp:1031> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&):
Slot connected:: 1testSamplePlaying()
KK <config_dialog.cpp:1017> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&)
KK <config_dialog.cpp:1031> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&):
Slot connected:: 1testSampleRecording()
KK <config_dialog.cpp:1017> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&)
KK <config_dialog.cpp:1031> static void ConfigDialog::connectSlot(const QStr
ing&, const QString&, const char*, const QObject*, const char*, const QString&):
Slot connected:: 1testFullDuplex()
KK <misc.cpp:2276> void Themes::setPaths(const QStringList&)
KK <misc.cpp:243> /usr/local/bin/../share/kadu/themes/sounds
KK <misc.cpp:243> /usr/local/bin/../share/kadu/themes/sounds/default/
KK <misc.cpp:2296> void Themes::setPaths(const QStringList&) end
KK <misc.cpp:2236> void Themes::setTheme(const QString&)
KK <config_file.cpp:28> void ConfigFile::read(): /usr/local/bin/../share/kadu/th
emes/sounds/default/sound.conf
KK <config_file.cpp:68> void ConfigFile::read() end
KK <config_file.cpp:147> QMap<QString, QString>& ConfigFile::getGroupSect
ion(const QString&)
KK <misc.cpp:2248> void Themes::setTheme(const QString&): end: theme: defau
lt
KK <notify/notify.cpp:295> void Notify::registerNotifier(const QString&, QO
bject*, const QMap<QString, QString>&)
KK <notify/notify.cpp:385> Notify::Notifier::Notifier(QObject*, const QMap<
QString, QString>&)
KK <notify/notify.cpp:388> Notify::Notifier::Notifier(QObject*, const QMap<
QString, QString>&) end
KK <notify/notify.cpp:233> void Notify::addConfigColumn(const QString&, con
st QMap<QString, QString>&)
KK <notify/notify_slots.cpp:88> void NotifySlots::registerDisabledControl(const
QString&)
KK <notify/notify_slots.cpp:90> void NotifySlots::registerDisabledControl(const
QString&) end
KK <notify/notify.cpp:245> void Notify::addConfigColumn(const QString&, con
st QMap<QString, QString>&) end
KK <notify/notify.cpp:309> void Notify::registerNotifier(const QString&, QO
bject*, const QMap<QString, QString>&) end
KK <sound/sound.cpp:269> SoundManager::SoundManager(const QString&, const
QString&) end
KK <sound/sound.cpp:40> int sound_init() end
KK <modules.cpp:381> void ModulesManager::incDependenciesUsageCount(const Mod
uleInfo&): Modu³ podstawowej obs³ugi d¼wiêku
KK <modules.cpp:384> incUsage: notify
KK <modules.cpp:387> void ModulesManager::incDependenciesUsageCount(const Mod
uleInfo&) end
KK <modules.cpp:613> bool ModulesManager::activateModule(const QString&) end
KK <misc.cpp:243> /usr/local/bin/../share/kadu/modules
KK <main.cpp:49> void kadu_signal_handler(int): 11
KK <main.cpp:53> Kadu crashed :(
KK <main.cpp:60> lock released
KK <main.cpp:62> lockfile closed
======= BEGIN OF BACKTRACE =====
[0] kadu [0x812d791]
[1] /lib/i686/libpthread.so.0 [0x4002d5ce]
[2] /lib/i686/libc.so.6 [0x408503b8]
======= END OF BACKTRACE ======
KK <config_file.cpp:74> void ConfigFile::write(const QString&) const
KK <config_file.cpp:96> file opened '/home/pawel/.gg/kadu.conf.backup.2005.04.06
.16.50.54'
KK <config_file.cpp:126> void ConfigFile::write(const QString&) const end
Aborted
Hello My Friend Viliami!!! . I am in needed asking you forgiveness for my past mistakes annnnd baaaad feelings toward you. I sure hope you will take this to heart and please forgive me My Friend. I know I did wrong and I can put it behind me and move forward..
No worry about you being here. That is why this country is the Land of Promise cause we are free people. You said it before: "Any thing posted up here is open to all to speak their mind." And we can do it here in the Old USA. Let us go on with UNTERSTANDING and TOLERANT and APPRECIATE DIVERSITIES, the only way we can learn and move forward.....Be happy and keep ing...............lopa
Hello lopa,
It is good to meet up with you again in more pleasant terms and thanks for letting me stay. As I have said in my previous post, I have already forgotten (and forgiven) whatever happened in the past.
I will take your advice and try my best to be more understanding, more tolerant and appreciate diversities.
The Law of Moses
The first time the term the âśLaw of Mosesâ comes up in the bible is found in
Joshua 8:31,32
as Moses the servant of the LORD had commanded the Israelites. He built it according to what is written in the Book of the Law of Moses-an altar of uncut stones, on which no iron tool had been used. On it they offered to the LORD burnt offerings and sacrificed fellowship offerings.
There, in the presence of the Israelites, Joshua copied on stones the law of Moses, which he had written.
Other references in the bible to the âśLaw of Mosesâ can be found in
Joshua 23:6
"Be very strong; be careful to obey all that is written in the Book of the Law of Moses, without turning aside to the right or to the left.
1 Kings 2:3
and observe what the LORD your God requires: Walk in his ways, and keep his decrees and commands, his laws and requirements, as written in the Law of Moses, so that you may prosper in all you do and wherever you go,
2 Kings 14:6
Yet he did not put the sons of the assassins to death, in accordance with what is written in the Book of the Law of Moses where the LORD commanded: "Fathers shall not be put to death for their children, nor children put to death for their fathers; each is to die for his own sins."
2 Kings 23:25
Neither before nor after Josiah was there a king like him who turned to the LORD as he did-with all his heart and with all his soul and with all his strength, in accordance with all the Law of Moses.
2 Chronicles 23:18
Then Jehoiada placed the oversight of the temple of the LORD in the hands of the priests, who were Levites, to whom David had made assignments in the temple, to present the burnt offerings of the LORD as written in the Law of Moses, with rejoicing and singing, as David had ordered.
2 Chronicles 25:4
Yet he did not put their sons to death, but acted in accordance with what is written in the Law, in the Book of Moses, where the LORD commanded: "Fathers shall not be put to death for their children, nor children put to death for their fathers; each is to die for his own sins."
Ezra 3:2
Then Jeshua son of Jozadak and his fellow priests and Zerubbabel son of Shealtiel and his associates began to build the altar of the God of Israel to sacrifice burnt offerings on it, in accordance with what is written in the Law of Moses the man of God.
Nehemiah 8:1
all the people assembled as one man in the square before the Water Gate. They told Ezra the scribe to bring out the Book of the Law of Moses, which the LORD had commanded for Israel.
Daniel 9:11
All Israel has transgressed your law and turned away, refusing to obey you. "Therefore the curses and sworn judgments written in the Law of Moses, the servant of God, have been poured out on us, because we have sinned against you.
Luke 2:22
When the time of their purification according to the Law of Moses had been completed, Joseph and Mary took him to Jerusalem to present him to the Lord
Luke 24:44
He said to them, "This is what I told you while I was still with you: Everything must be fulfilled that is written about me in the Law of Moses, the Prophets and the Psalms."
Meaning: Everything was fulfilled at the cross (ceremorial/sacrificial law). The Law of Moses was nailed to the cross, but not the 10 Commandments/Moral Law.
John 7:23
Now if a child can be circumcised on the Sabbath so that the law of Moses may not be broken, why are you angry with me for healing the whole man on the Sabbath?
John 8:5
In the Law Moses commanded us to stone such women. Now what do you say?"
Acts 13:39
Through him everyone who believes is justified from everything you could not be justified from by the law of Moses.
Acts 15:5
Then some of the believers who belonged to the party of the Pharisees stood up and said, "The Gentiles must be circumcised and required to obey the law of Moses."
Acts 28:23
They arranged to meet Paul on a certain day, and came in even larger numbers to the place where he was staying. From morning till evening he explained and declared to them the kingdom of God and tried to convince them about Jesus from the Law of Moses and from the Prophets.
1 Corinthians 9:9
For it is written in the Law of Moses: "Do not muzzle an ox while it is treading out the grain."[Deut. 25:4 Is it about oxen that God is concerned?
Remember that the âśLaw of Mosesâ is actually Godâs Law (all laws are Godâs). God Compose and commanded all Laws, but Moses wrote them down in a book. The following verses makes this point very clear.
Exodus 24:12
The LORD said to Moses, "Come up to me on the mountain and stay here, and I will give you the tablets of stone, with the law and commands I have written for their instruction."
Exodus 24:3
When Moses went and told the people all the LORD's words and laws, they responded with one voice, "Everything the LORD has said we will do."
Leviticus 26:46
These are the decrees, the laws and the regulations that the LORD established on Mount Sinai between himself and the Israelites through Moses.
Numbers 31:21
Then Eleazar the priest said to the soldiers who had gone into battle, "This is the requirement of the law that the LORD gave Moses:
Deuteronomy 1:5
East of the Jordan in the territory of Moab, Moses began to expound this law, saying:
Deuteronomy 4:44
This is the law Moses set before the Israelites.
Deuteronomy 4:45
These are the stipulations, decrees and laws Moses gave them when they came out of Egypt
Deuteronomy 5:1
Moses summoned all Israel and said: Hear, O Israel, the decrees and laws I declare in your hearing today. Learn them and be sure to follow them.
Deuteronomy 31:9
So Moses wrote down this law and gave it to the priests, the sons of Levi, who carried the ark of the covenant of the LORD , and to all the elders of Israel.
Deuteronomy 31:24
After Moses finished writing in a book the words of this law from beginning to end,
Joshua 1:7
Be strong and very courageous. Be careful to obey all the law my servant Moses gave you; do not turn from it to the right or to the left, that you may be successful wherever you go.
2 Chronicles 34:14
While they were bringing out the money that had been taken into the temple of the LORD , Hilkiah the priest found the Book of the Law of the LORD that had been given through Moses.
Nehemiah 9:14
You made known to them your holy Sabbath and gave them commands, decrees and laws through your servant Moses.
Nehemiah 10:29
all these now join their brothers the nobles, and bind themselves with a curse and an oath to follow the Law of God given through Moses the servant of God and to obey carefully all the commands, regulations and decrees of the LORD our Lord.
It is clear from the above verses that;
1. Another is one word.
Can I have another cup of coffee? (NOT an other cup...)
Ann's going to look for another job.
2. After would rather, use an infinitive (without to) or a past tense, not a present tense.
I'd rather stay at home this evening. (NOT I'd rather to stay at home...)
I would rather you paid me in cash. (NOT I would rather you pay me in cash.)
3. Use an -ing form after be/get used to.
I'm used to driving in London now, but it was hard at the beginning. (NOT I'm used to drive...)
I'll never get used to living in this place.
4. How long are you here for? asks about the future.
'How long are you here for?' 'Till Easter.' (NOT 'Since Christmas.')
5. Don't use could to talk about something that you succeeded in doing.
I managed to run 10 km yesterday in under an hour. (NOT I could run 10 km yesterday...)
How many eggs were you able to get? (NOT ...could you get?)
6. Indirect questions usually have the same construction as statements.
I asked where her parents were. (NOT USUALLY I asked where were her parents.)
The policeman wanted to know where I lived. (NOT ...where did I live?)
7. To say that something is not necessary, use needn't or don't have to, not mustn't.
You needn't pay now; tomorrow will be OK. (NOT You mustn't pay now; tomorrow will be OK.)
I don't have to wear a tie at work. (NOT I mustn't wear a tie at work.)
8. Everything is a singular word.
Everything was broken. (NOT Everything were broken.)
Is everything ready?
9. Use because or so, but not both together.
Because the train was late I missed the meeting. OR The train was late, so I missed the meeting. (BUT NOT Because the train was late, so I missed the meeting.)
10. We say something to a person.
She never says 'Hello' to me. (NOT She never says me 'Hello'.)
Andrew has said nothing to Peter. (NOT Andrew has said Peter nothing.)
11. We don't normally use to after arrive.
What time do we arrive in Bedford? (NOT … arrive to Bedford? )
The train arrived at our station half an hour late.
12. Because is a conjunction; because of is a preposition.
We cancelled the match because it rained. (NOT … because of it rained.)
We cancelled the match because of the rain. (NOT …because the rain.)
13. After the verb lack, no preposition is necessary.
The soup lacks salt. (NOT … lacks of salt.)
It's a good novel, but it lacks structure.
14. Before (meaning ‘before that') follows an expression of time.
Last summer, I decided to go and visit the town that I had left eight years before. (NOT … before eight years.)
I had already met her once, about three years before.
15. News is singular.
All the news is bad. (NOT All the news are bad.)
BBC Radio 4. Here is the news.
16. You borrow something from somebody.
I borrowed the money from my mother. (NOT I borrowed my mother the money.)
Can we borrow some glasses from you?
17. We prefer closed, not shut, before a noun.
When I talk to you, I feel as if I'm standing in front of a closed door. (NOT … a shut door.)
He's got a closed mind. You can't tell him anything.
18. We say come from (present) to give our town, country etc of origin.
Sarah comes from Texas. (NOT Sarah came from Texas.)
Where do you come from?
19. Comparatives are made with more or -er, but not both.
The weather is getting colder. (NOT … more colder.)
Please try to be more polite. (NOT … more politer.)
20. We don't use on the contrary to give another side of a question.
It's hard work. On the other hand, it's interesting. (NOT on the contrary, it's interesting.)
She's very bad-tempered. On the other hand, she's generous.
21. In affirmative sentences we generally use a long time, not long, except in a very formal style.
We waited a long time, but she didn’t come. (NOT We waited long, but …)
It will be a long time before we invite her again.
22. Use superlatives to compare people and things with the groups that they belong to.
Sandra is the tallest of the five girls. (NOT Sandra is the taller of the five girls.)
I think I’m the oldest person in the class.
23. We usually use in after dressed.
She was dressed in yellow from head to foot. She looked like a daffodil.
The bride was dressed in white silk.
24. We don’t use it … + infinitive with allow.
Smoking is not allowed. (NOT It is not allowed to smoke.)
We weren’t allowed to use calculators in the exam. (NOT It wasn’t allowed to use …)
25. Whose means ‘who is’ or ‘who has’; whose is a possessive.
Who’s that? (NOT Whose that?)
Who’s taken my keys? (NOT Whose taken my keys?)
Whose coat is that? (NOT Who’s coat is that?)
26. We don’t usually use other with uncountable nouns.
Can I have more rice? (NOT … other rice?)
Perhaps we should use different oil. (NOT … other oil.)
27. We use either, not any, to talk about two people or things.
I can write with either hand. (NOT … with any hand.)
28. Don’t put articles and possessives together before nouns.
She’s a friend of mine. OR She’s my friend. (BUT NOT She’s a my friend.)
Peter’s lost his keys. (NOT … the his keys.)
29. We say that somebody is good, bad, clever etc at something.
My sister is very good at maths. (NOT … good in maths.)
I’m not very clever at languages.
30. Don’t leave out a/an in negative expressions.
Don’t got out without a coat. (NOT … without coat.)
It’s difficult to get there if you haven’t got a car. (NOT … if you haven’t got car.)
31. We use any, not every, to say ‘one or another’.
‘Which newspaper would you like?’ ‘It doesn’t matter. Any one.’ (NOT … every one.)
‘When would you like to come to dinner?’ ‘Any day is OK.’
32. Advice is uncountable.
Can you give me some advice? (NOT … an advice?)
My father gave me three pieces of advice. (NOT … three advices.)
33. We don’t use some if we know the exact number.
You’ve got beautiful fingers. (NOT … some beautiful fingers.)
A mountain bike needs to have strong wheels. (NOT … some strong wheels.)
34. We drop articles in some common expressions with school and bed.
Why isn’t Angela at school today? (NOT … at the school today?)
I want to spend a day in bed.
35. When which? what? or who? are subjects, we make questions without do.
Which costs more - the blue one or the grey one? (NOT Which does cost more …?)
What happened to your car? (NOT What did happen to your car?)
Who phoned? (NOT Who did phone?)
36. We drop articles after the amount/number of.
I was surprised by the amount of money that was collected. (NOT … the amount of the money …)
The number of unemployed rose sharply last month. (NOT The number of the unemployed…)
37. We use because, not as or since, if the reason is the most important part of the sentence.
Why am I leaving? I’m leaving because I’m fed up. (NOT I’m leaving as/since I’m fed up.)
They’re laughing because they think your hat’s funny.
38. Travel is normally uncountable.
I like travel.
We went on a trip/journey to the Antarctic last spring. (NOT We went on a travel …)
39. Can has no infinitive. We use be able to instead.
I’d like to be able to sing. (NOT … to can sing.)
When will you be able to meet us?
40. We don’t normally use an infinitive after why.
I know how to do it, and I know when to do it, but I don’t know why I should do it. (NOT … I don’t know why to do it.)
Why do we lock this office?
41. Demonstratives replace articles.
I don’t like that colour. (NOT … the that colour.)
Have you seen this report? (NOT … the this report.)
42. We don’t normally use progressive forms of hear.
I (can) hear the sea. (NOT I am hearing the sea.)
I think I (can) hear Peter coming up the stairs.
43. After discuss, no preposition is necessary.
We spent half an hour discussing the weather. (NOT … discussing about the weather.)
Let’s discuss your plans.
44. We usually drop at in questions beginning What time …?
What time would you like to eat? (NOT USUALLY At what time …?)
I’m not sure what time the film starts.
45. We say on holiday (singular).
I’ll be on holiday next week. (NOT … on holidays …)
We met John and Virginia when we were on holiday in Greece.
46. Don’t drop a before hundred.
Our family has lived here for a hundred years. (NOT … for hundred years.)
The factory is about a hundred miles west of London.
47. If you can’t see or find somebody, they are nowhere to be seen/found.
When I went back to the car park, my car was nowhere to be seen. (NOT … my car was nowhere to see.)
The children were nowhere to be found. (NOT … nowhere to find.)
48. We don’t normally use might to talk about past possibility.
I felt very hot and thirsty. Perhaps I was ill. (NOT … I might be ill.)
I saw a girl going into Peter’s house. Maybe it was Jeanne. (NOT … It might be Jeanne.)
49. We use beat, not win, to say that one person defeats another in a game, fight etc.
My girlfriend beat me at poker last night. (NOT My girlfriend won me at poker last night.)
Aberdeen beat Bristol 3-0.
50. With abbreviations, the difference between a and an depends on pronunciation, not spelling.
She’s a US citizen. (NOT She’s an US citizen.)
Would you like to be an MP? (NOT … a MP?)
51. Weather is uncountable.
We had terrible weather last week. (NOT … a terrible weather …)
I hope we get good weather at the weekend.
52. Words like President, King, Doctor in titles have no article.
President Nixon resigned over the Watergate scandal. (NOT The President Nixon …)
I'd like to see Dr Franklin. (NOT … the Dr Franklin.)
53. We usually use over, not across, to mean 'on/to the other side of something high'.
Why are you climbing over that wall? (NOT … across that wall?)
I threw his keys over the fence, where he couldn't get them.
54. Actually means 'really' or 'in fact', not 'now'.
She said she was 18, but actually she was 15.
In 1900 the population of London was higher than it is now. (NOT … than it actually is.)
55. Asleep and afraid are not normally used before nouns.
He had the innocent expression of a sleeping baby. (NOT … of an asleep baby.)
In the house, we found a frightened child hiding in the kitchen. (NOT … an afraid child.)
56. We don't usually put an adverb and its complement together before a noun.
We're looking for people who are skilled in design. (NOT … skilled in design people.)
He has a difficult accent to understand. (NOT … a difficult to understand accent.)
57. Eventually means 'finally', not 'possibly' or 'perhaps'.
It took a long time, but eventually he finished his studies.
I'm not sure what I'll do next year. Perhaps I'll go to university if I can get a place. (NOT Eventually I'll go to university …)
58. We don't usually use too before adjective + noun.
The problem was too difficult. (BUT NOT It was a too difficult problem.)
I put down the bag because it was too heavy. (BUT NOT I put down the too heavy bag.)
59. We usually put descriptive adjectives before classifying adjectives.
An old political idea (NOT A political old idea)
The latest educational reform (NOT The educational latest reform)
60. Nouns referring to nationality are often different from the corresponding adjectives.
Ellis considers himself a typical Welshman. (NOT … a typical Welsh.)
She's married to a Spaniard. (NOT … a Spanish.)
61. Adjectives that express opinions usually come before other descriptive adjectives.
a lovely cool drink (NOT a cool lovely drink)
their wonderful old house (NOT their old wonderful house)
62. Pronoun objects come before adverb particles.
Can you switch it on, please? (NOT …switch on it…)
I’m going to throw them all out. (NOT … throw out them all.)
63. Adverbs can’t usually be used instead of adjectives.
She danced happily into the room. (NOT She danced happy …)
I’m terribly sorry. (NOT I’m terrible sorry.)
64. After all doesn’t mean ‘finally’. It means ‘all things considered’ or ‘in spite of what was expected’.
It took a long time, but finally we found our dream house. (NOT … but after all we found our dream house.)
She can make her own bed. After all, she’s not a baby any more.
I expected to fail the exam, but I passed after all.
65. Ago comes after an expression of time.
Ann phoned two hours ago. (NOT … ago two hours.)
I should have finished this work six weeks ago.
66. We don’t normally use all without a noun to mean ‘everybody’.
Everybody was quiet. (NOT All were quiet.)
I’ve written to everybody. (NOT I’ve written to all.)
67. In exclamations with how, the adjective or adverb comes immediately after how.
How cold it is! (NOT How it is cold!)
How well she sings! (NOT How she sings well!)
68. We don’t use every with uncountable nouns.
I like all music. (NOT I like every music.)
I can do every kind of work. (NOT … every work.)
69. After either, we use a singular noun.
I can come on Wednesday or Thursday - either day is OK. (NOT … either days …)
She can write with either hand.
70. We usually ask ‘What colour …?’ without a preposition.
What colour is your new car? (NOT Of what colour …?)
What colour is her hair this week?
71. We don’t usually drop nouns after adjectives.
Poor little boy! (NOT Poor little!)
The most important thing is to be happy. (NOT The most important is to be happy.)
72. All day doesn’t mean the same as every day.
I worked all day yesterday, from 8.00 till bedtime.
I worked every day except Sunday last week. (NOT … all day except Sunday …)
73. Don’t drop a/an after what in exclamations.
What a rude man! (NOT What rude man!)
What an awful film! (NOT What awful film!)
74. Experience and experiment don’t mean the same.
We did an experiment in the chemistry lesson to see if you could get chlorine gas from salt. (NOT We did an experience …)
I’m experimenting with a new perfume.
I had a lot of interesting experiences during my year in Africa. (NOT I had a lot of interesting experiments …)
Have you ever experienced the feeling that you were going mad? (NOT Have you ever experimented the feeling …?)
75. We don’t usually use reflexive pronouns after feel.
I feel really energetic today. (NOT I feel myself really …)
Andrew often feels depressed. (NOT … feels himself depressed.)
76. We use half without of in expressions of measurement and amount.
They live about half a mile from here. (NOT … half of a mile …)
I only need half a pint.
77. We use hear, not listen to, to say that something ‘comes to our ears’.
Suddenly I heard a strange noise. (NOT Suddenly I listened to a strange noise.)
Did you hear that?
78. After help, we can use object + infinitive (with or without to).
Can you help me (to) find my ring? (NOT … help me finding my ring?)
Let me help you (to) wash up.
79. We usually say hope … not, rather than do not hope.
I hope it doesn’t rain tomorrow. (NOT I don’t hope it rains tomorrow.)
‘Is Peter coming this evening?’ ‘I hope not.’
80. We say that you crash into something.
Granny crashed into a tree yesterday. (NOT Granny crashed against a tree yesterday.)
The plane crashed into a mountain.