Przydatne informacje dla... -- warto się zapoznać ...

Programowanie w językach: C , C++, python, oraz skrypty bash , tcsh
wszystko co lubią open-sourcowcy .... pod konsolą i open gl
Regulamin forum
Przy pisaniu nowego tematu podajemy język w formacie:

[C] , [C++] , [Python] , [BASH] , [TCSH]
ODPOWIEDZ
Awatar użytkownika
SunRiver
Administrator
Posty: 912
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Festung Oppeln
Kontakt:

Przydatne informacje dla... -- warto się zapoznać ...

Post autor: SunRiver »

 ! Wiadomość z: SunDUINO

Linuxa w zasadzie rozpatrujemy pod kątem tylko i wyłącznie systemów wbudowanych , SoM , SBC
czyli urządzeń o ograniczonych zasobach i charakteryzujących się pewnymi "zdolnościami"
w naszym wypadku głównie mamy zawsze na myśli Miniaturki czyli nasze ulubione:

-- KHADAS
-- PineA64
-- SomLABS VisionSOM -- na i.MX6ULL
Biorąc pod uwagę powyższe staramy się podchodzić minimalistycznie choć wiadomym jest iż większość
rzeczy będzie działać na "dużych Linuxach" ale głównie zależy nam na małych. Dodatkowo spora ilość z nas
spotyka się z Linuxem 1 raz właśnie ze względu na SBC , SOM ... dlatego też prosimy o wyrozumiałość w tej kwestii
Starych wygów , hakierów i innych Linuxowców ... nasze pojmowanie jest bardzo ale to bardzo minimalistyczne.
jednakże chętnie też się zapoznamy z waszymi pomocnymi radami i pomysłami , zachęcam do pisania.

Tutaj ... będziemy dopisywać takie bardziej przydatne rzeczy związane z obsługą linuxa, zwykle wszystko się będzie
toczyć dookoła Debiana i pochodnych jak Ubuntu ale ... :)

Przyjmijmy też zasadę wpisywania komendy na naszym forum:

# <komenda> ---> oznacza że działamy na koncie root
$ <komenda> ---> oznacza że działamy na koncie użytkownika

W działach SBC opisujemy tylko operacje dotyczące konkretnego SBC zaś tutaj ogólnie dotyczące wszystkich,
owszem jak zauważą poważni linuxowcy to samo da się zrobić i tu i tam .. tak to prawda jednakże chodzi o to
by ktoś szukający jak to zrobić na PineA64 miał opis ze screenami właśnie na takiej maszynie. Znaczenie to ma takie
że numeracja pinów GPIO czy dostęp do różnych magistral może się różnić.

Ważne by system był aktualny.
------------------------------------------------------------------------------------------------------------------------------------------------------------
w przypadku naszych SBC z Debianem 9 robimy to ręcznie bowiem na SBC nie możemy sobie
pozwolić na autoupdate z crona.

# apt-get list --upgradable - poinformuje nas o dostępności nowych wersji pakietów jeśli dostępne.
# aptitude update - aktualizuje repozytoria

# aptitude full-upgrade - aktualizuje cały system -- wymagane jest trochę cierpliwości i odpowiedzenie na
kilka pytań niemniej raz na jakiś czas warto wykonać ...

# aptitude - pozwala na przeglądanie zawartości repozytoriów i dostępnych pakietów oraz ich instalację
- dodatkowo mamy dostępny opis pakietu , co tez ułatwia wyszukiwanie potrzebnych nam rzeczy ....

Obrazek

Szczególnie interesujące mogą byc dostępne pakiety w drzewach embeded i electronics gdzie znajdziemy
różne ciekawe narzędzia i programy, pamiętajmy jednak że zwykle pracujemy przez połączenie SSH w konsoli
rzadziej przez VNC czy też na konkretnej maszynie z monitorem -- no może w wypadku khadasa lub PineA64
gównie jednak x'y mamy ograniczone.

Obrazek

Pobrane pakiety do aktualizacji/instalacji są na naszym dysku i z czasem mogą niepotrzebnie zajmować miejsce
aby je odzyskać wystarczy użyć:

# aptitude clean

-----------------------------------------------------------------------------------------------------------------------------------------------------------
Inną metodą aktualizacji jest użycie apt-get , którego zwykle używamy do instalacji pakietów.

# apt-get update - aktualizuje listę repozytoriów i dostępnych pakietów
# apt-get dist-upgrade - aktualizuje system

-----------------------------------------------------------------------------------------------------------------------------------------------------------



Inne przydatne będziemy dopisywać systematycznie tutaj , lub w konkretnych działach dotyczących konkretnych
systemów SBC.
..:: KONTO PRZYGOTOWANE DO USUNIĘCIA ::..
💫Lothar TeaM
💦GitHUB
💦Google Drive
💦Sotton

Awatar użytkownika
squeez
GRafik
Posty: 143
Rejestracja: 16 paź 2017, 23:52

Re: Przydatne informacje dla... -- warto się zapoznać ...

Post autor: squeez »

Ze swojej strony dodam że nie powinno się mięszać działania apt-get z aptitude teoretycznie robią to samo ale jakiś czas temu na sronach debiana o tym pisali.
Poza tym zawsze przy aktualizacji (przejściu na nową wersję systemu) zalecają wszystko robić na apt-get a nie aptitude. Więc coś w tym jest.
Ja kiedyś korzystałem z aptitude ale się odzwyczaiłem :)

Co do procesu aktualizacji w apt-get.
#apt-get update - jak pisał Sun aktualizacja repozytoriów
#apt-get upgrade - aktualizuje pakiety z tym że w podsumowaniu czasami może być informacja że jakiś pakiet/pakiety zostanie "zatrzymaniu" związane jest to z tym że jego aktualizacja pociąga ze sobą zainstalowanie innych pakietów których nie ma w systemie i zwykły upgrade na to nie pozwala.
Wyjścia są trzy najpopularniejsze wyjścia:
1) #apt-get install --reinstall nazwa pakietu - reinstalacja pakietu co spowoduje pobranie aktualnych zależności, nie zawsze zadziała i jeśli tych pakietóœ jest więcej zalecam metodę 2
2) #apt-get upgrade --with-new-pkgs (mniej "radykalna" forma i zalecana)
3) #apt-get dist-upgrade

Jeśli chcemy poczytać o pakietach (wersje zależności, mały opis itp.) albo poszukać czegoś co nas by interesowało jest:
#apt-cache search nginx - info o pakiecie nginx

Ale może być tak że nie wiemy jak pakiet się nazywa a szukamy np. serwera www.
#apt-cache search itusłowoklucz - dzięki czemu możemy przeszukać repo w dość prosty sposób z tym że czasami należy te wyniki filtrować np. dodatkowym grepem

Po każdej aktualizacji zaleca się usunięcie cachowanych paczek.
#apt-get clean

Niekiedy w procesie aktualizacji jedne paczki zmieniają zależności i w systemie zostają "osierocone pakiety", czyli takie, które kiedyś były wykorzystane jakie zależności innych pakietów ale już nie są przez nie (rodzice) używani. Aby nie zalegały w systemie wykonujemy:
#apt-get autoremove

To tyle co mi przychodzi do głowy a może pomagać.

Z mniej popularnych to np. zachodzi potrzeba że chcemy wiedzieć jakie pliki zostały zainstalowane w systemie (instalując jakiś pakiet) i jakie mają lokalizacje pomocne będzie apt-file z tym że nie jest standardowo zainstalowane więc:
#apt-gei install apt-file
#apt-file update
#apt-file search nazwapakietu


Jak coś mi się przypomni postaram się napisać.
Kończąc zalecam używanie jednego z mechanizmów do pakietów, czy to apt-get czy aptiue w sumie jest jeszcze sam apt nowo promowany i prostsza składnia (mniej pisania) ale to są chyba skrypty na samego apt-get.

Awatar użytkownika
SunRiver
Administrator
Posty: 912
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Festung Oppeln
Kontakt:

Re: Przydatne informacje dla... -- warto się zapoznać ...

Post autor: SunRiver »

no wreszcie ... i o to chodzi Squeez

no to dalej .....
W naszych SBC pamięć zwłaszcza w VisionSOM jest ograniczona i mizerna
ale to też nie problem ....

Zobaczmy co nam zostało wolne ....

# free -m

Obrazek

noo tragedii jeszcze niema , ale najlepiej też nie jest ...
Posprzątajmy zatem nieco ...

# sync --> przepełni nam bufor systemu plików .
# echo 3 > /proc/sys/vm/drop_caches --> czyszczenie PageCache, dentries <dendery ??> i inodes <węzły>

Obrazek

Sprawdzamy co się wydarzyło ?

# free -m

Obrazek

No od razu lepiej :)
 ! Wiadomość z: SunDUINO

Należy jednak uważać ... z poziomem 3 może spowodować kłopoty w "dużym" systemie gdyż kasuje cache bez
ubijania procesów które z niego korzystają w tym modułów jądra -- nasz linek wiele nie ma roboty więc nic mu
się nie stanie niemniej ... należy używać z rozwagą.

Tu warto pomyśleć o :

# sync ; echo 1> /proc/sys/vm/drop_caches --> czyści tylko PageCache
# sync ; echo 2> /proc/sys/vm/drop_caches --> czyści tylko dendery i węzły

(zastosowałem tu ";" do rozdzielenia poleceń co spowoduje wykonanie ich sekwencyjne, powłoka poczeka
aż się wykona 1 polecenie sync i wykona echo , mozna tak wiele naraz :) )
Możemy wykonywać czyszczenie ręcznie , ale możemy też zlecić je automatyce niech się sam cyklicznie sprząta
poprzez dodanie zadania do harmonogramu crona :

# crontab -e --> włączy się nam edycja harmonogramu

i tu na końcu możemy sobie dopisać :
# wyczyść cache co godzinę .... a co !!
0 * * * * sync; echo 3 > /proc/sys/vm/drop_caches

zapisujemy klawiszem F2 i F10 wychodzimy z edycji ...

Od tej pory flush co godzinę ... możecie to sobie sprawdzić w syslogu na wyjściu tailf
<oczywiście poczekajcie z tym trochę żeby cron zadziałał :P>

# tailf /var/log/syslog | grep 'cron'

i to tyle ....
..:: KONTO PRZYGOTOWANE DO USUNIĘCIA ::..
💫Lothar TeaM
💦GitHUB
💦Google Drive
💦Sotton

Awatar użytkownika
squeez
GRafik
Posty: 143
Rejestracja: 16 paź 2017, 23:52

Re: Przydatne informacje dla... -- warto się zapoznać ...

Post autor: squeez »

To może też się podłącze do tematu RAM cache.

Jak zostało napisane system cachuje dane, zanim zostaną zapisane na dysku trafiają do cache zwanego dirty (tak sobie wymyślono że dane zanim zostaną zapisane fizycznie na dysku/nośniku są nazywane brudne). Zostają w cache do do czasu modyfikacji, przeterminowania czy też zapisu na dysku (sync).
Zmieniając parametry jądra można wpływać na ten mechanizm. Generalnie system zarządzania pamięcią w jarze nosi nazwę vm (Virtual Memory) jak ktoś che poczytać https://www.kernel.org/doc/Documentation/sysctl/vm.txt

Do monitorowania i edycji parametrów jest dostępny psędo system plików /proc/sys/vm/
aktualny stan można podejrzeć w pliku /proc/meminfo

Np. żeby sprawdzić ile zajmuje aktualnie cache
#cat /proc/meminfo | grep -i cache
Sprawdzenie ile z tego zajmuje dirty cache:
#cat /proc/meminfo | grep -i dirty
Żeby zapanować nad tym ile RAM-u ma być przeznaczane na dirty cache mamy kilka możliwości. Pliki umożliwiające zmianę parametrów to:

Próg po przekroczeniu którego dane zostaną zapisane z cache na dysk (pierwsza wartość _bytes podane w bajtach, _ratio - podane w procentach (brana jest pod uwagę tylko jedna z nich, druga ma być ustawiona na 0)
/proc/sys/vm/dirty_background_bytes
/proc/sys/vm/dirty_background_ratio


Jak powyżej z tym że jest to globalny próg dla wszystkich procesów (poprzednie dotyczyło pojedynczego procesu).
/proc/sys/vm/dirty_bytes
/proc/sys/vm/dirty_ratio


Czas podany w setnych częściach sekundy po jakim dane w cache zostaną uznane za stare np. 1000 to 10s
/proc/sys/vm/dirty_expire_centisecs

Czas po jakim uruchamiany jest fluscher, czyli mechanizm sprawdzający czy dane w cache są aktualne lub przeterminowane, też podanyc w setnych częściach sekundy.
/proc/sys/vm/dirty_writeback_centisecs

Tylko sprawa nie jest taka prosta, bo można by było ustawić dość małą wartość dla dirty pages np 5% i często je opróżniać (zapisywać na dysku) ale w przypadku sytemu na SBC gdzie "dyskiem" jest karta SD, która ma ograniczoną ilość cykli zapisów może spowodować przedwczesną degradację karty. Podobnie ze zbyt krótkim czasem.

Wszytko zależy więc od specyfiki i potrzeb systemu.
Edycja plików w /proc/ działa tylko do czasu resetu systemu, żeby te parametry były uwzględnione przy starcie systemu musimy zapisać je do pliku: /etc/sysctl.conf np.:
vm.dirty_background_ratio = 2
vm.dirty_ratio = 3
vm.dirty_writeback_centisecs = 500
vm.dirty_expire_centisecs = 1500
Żeby ustawienia zadziałały bez potrzeby resetu systemu po zapisie w pliku /etc/sysctl.conf wydajemy polecenie
#sysctl -p

ODPOWIEDZ

Wróć do „Linux”