Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Logik

Stran: 1 ... 4 5 [6] 7 8 ... 68
76
Vývoj / Re:Rada při návrhu db tabulek
« kdy: 25. 06. 2021, 11:12:42 »
Jo, tak to jo - to je v takovém případě rozumný postup, ale to je velmi specifické užití. V okamžiku, kdy Ti na tom závisí nějaká "bussines logika", tak si nedovedu představit, že by to šlo použít. Např. když ti do tabulky zaměstnanců přibydou "skrytí agenti" -  které nebudeš chtít zobrazovat na webu v seznamu zaměstnanců - tak už se s takto jednoduchým přístupem nevyřeším. Nemůžu vzít novou databázi a nad ní pustit starou verzi aplikace, prozradil bych Čepigu.

Navíc když budeš chtít pokrýt aplikaci testy, tak by Ti to mělo na té starší db zařvat atd.... Takže jo, beru, že tendle přístup se někdy hodí, ale myslím, že se nedá brát jako "univerzální řešení" na modifikaci či refaktoring databáze.

My to řešíme (ale to asi není nic nového) většinou systémem migrací - tzn. aplikace si vždycky při deployi (jak se to skloňje :-)) upraví databázi na nejvovější verzi. Což jakž takž řeší půl problému (stará db verzus nová aplikace) - dělat "downgrade databáze" je zpravidla problém. Ale to furt neřeší ten základní problém, že s každou změnu struktury db je třeba upravit jak všechen SQL kód tak veškerou bussines logiku dotčené tou změnou, včetně testů. Což může někdy být hodně práce, takže je výhoda, když je schéma DB co nejuniverzálnější a tedy se nemusí měnit.

Předtím jsem nemluvil až tak o přidání sloupce (s tím je zpravidla práce minimum) - na kteréžto, jestli jsem pochopil Tvůj post, je zaměřeno Tvé řešení především - ale o refaktoring vztahů mezi entitami. Kterej se v SQL (pokud člověk neudělá chybu v kardinalitách) dělá zřídka, ale v stromových databázích - z důvodů, které jsem popsal v minulých postech - se mu někdy vyhnout nejde.

77
Vývoj / Re:Rada při návrhu db tabulek
« kdy: 25. 06. 2021, 10:09:14 »
Kit: Moh bys to "řízení tokem databáze" nějak rozvést? Nějak si neumím představit, co přesně pod tím myslíš.... a třeba se něco naučím :-)
Toho mít dvě verze kódu pro různé struktury se snad zbavit nemůžeš, ne?

78
Vývoj / Re:Rada při návrhu db tabulek
« kdy: 25. 06. 2021, 00:10:09 »
SB: Nereagoval jsem ještě na tyto námitky - přitom jde možná o nejpodstatnější věci:

Citace
Např. dokumentové DB jsou bezschématové, takže změna struktury se provádí uložením dokumentu v jiném formátu. V RDB je třeba změna statické struktury zvláštními příkazy, a to při odstavené DB.
To ale překrucuješ, co jsem tvrdil. Nepsal jsem o složitosti provádění změny - koneckonců, když už se provádí změna, je způsob realizace změny schématu ten menší problém - daleko větš problém je nutnost adaptovat aplikaci na tu změnu, to že stará aplikace na nové struktuře nefunguje a nová na staré (anebo se kód zanáší "legacy vydličkama").
Psal jsem o tom, že tam, kde relační struktura nevyžaduje změnu, tak stromová může a dosti často bude, protože stromová struktura je podstatně méně univerzální, než ta relační.
Navíc, jak poukazuje BoneFlute, ta "statická typovanost" SQL databáze má nejen nevýhody, ale i výhody: např. podstatně větší záruky na udržení konzistence dat.

Citace
Obchodní analýza se neliší podle použité DB (když to teda nedělá relačník, který návrh systému začne od databáze). Následné mapování objektů do dokumentů je výrazně jednodušší než do relací.
Ke každé struktuře relací existuje mnoho stromových struktur, zachycujících tatáž data. Nikdo nezačíná od databáze. Začíná se od reálných objektů, které nějak mapuješ na (ať už SQL, nebo NoSQL) schéma. U SQL je to mapování (přinejmenším zpravidla) jednoznačné, u stormu prostě jednoznačné není. Má být učitel vlastnost třídy? Nebo třída učitele? Nebo to mají být dvě nezávislé kolekce odkazované idčky? Každý způsob zachycení dat se hodí pro něco jiného - a je třeba zvolit právě jeden. Nic takového není třeba u návrhu relačního schématu řešit.

Analýza SQL i NoSQL začíná úplně stejně: člověk zanalyzuje entity a vztahy mezi nimi. U SQL jsi pak v podstatě hotový, zbytek je "manuální" rozpadnutí do relací. U stromové databáze jsi ale neskončil, naopak je třeba udělat - a rozhodně ne nepodstatný - další krok: udělat analýzu, kterou konkrétní z těchto mnoha stromových struktur zachycujících ten samý logický systém zvolit.

Nemluvě o tom, že ani nemusí existovat stromová struktura, která je vhodná pro realizaci všech požadovaných pohledů na modelovaná data. Ne všechna data v realitě jsou strom a ne vždy je "zjednodušení do stromu" ku prospěchu věci. Nekdy samozřejmě ano.

79
Vývoj / Re:Rada při návrhu db tabulek
« kdy: 24. 06. 2021, 18:04:15 »
Kit:
Citace
SQL je dostatečně expresivním jazykem, většina ORM toho nedosahuje.

Ano a ne. Záleží na úhlu pohledu. SQL má samozřejmě velmi výrazně širší možnosti, než jakýkoli ORM. Z tohodle pohledu ano. Ale z hlediska snadnosti napsání dané úlohy je SQL oproti ORM "assembler". Proto je někdy vhodné psát jen v ORM (pak ale často mohou být NoSQL databáze lepší volbou), někdy jen v SQL, někdy se hodí přístup kombinovat. Samozřejmě, má to své z určitého poledu problematické stránky, jak v link postoval SB.
SB:
Citace
V seznamu je definováno pořadí, které je závislé na pořadí přidání elementu. Seznam nepotřebuje index. RDB dodává množinu, u které není definováno pořadí, pokud není explicitně uvedeno řazení v dotazu. Update DB tabulky seznamem není triviální úlohou a zpravidla je výhodnější to řešit jinak.
To ale není problém OO a SQL, ale jde o obecnější problém
Objektový model neznamená nutnost používání seznamů. Ani v těch "nejpurističtějších" OO definicích žádné seznamy nejsou. Seznamy se používají čistě proto, že jsou to datové struktury, se kterými se dobře a jednoduše pracuje v imperativních jazycích. Ve skutečnosti mají být objekty "odrazem reality". Když si vezmu takový objekt "školní třída", tak ta má jako vlastnost "seznam žáků". A podle čeho má být ten seznam seřazen? Podle příjmení? Čísla ve třídním výkazu? Prospěchu? U drtivé většiny vlastností objektů není žádné "preferované pořadí", tedy jde o množiny, ne o seznamy.

Že se ta množina realizuje v praxi pomocí seznamu, to, že je tam nějaké pořadí dané časem vložení: to není žádná "objektová věc", ale je to implementační artefakt, který nemá s podstatou uložených dat nic společného. Max. se tento artefakt použije k implementačnímu urychlení procházení dané množiny podle nějakého preferovaného pořadí.

A z druhé strany - ano, SQL databáze používají na ukládání množiny. Nebo přesněji v programátorské hantýrce (pokud nejsou definovány unique constrainy) multisety. A ano, objekty jsou zpravidla implementovány seznamy. Potud ano, jenže..... Jak píšu výš ta "seznamovost" není podstata objektů. Funkcionální jazyky jsou "seznamové" ještě více, než OOP jazyky. Stejnětak v neOO přístupu, když se používají datové struktury a "funkce vedle", opět velmi často budeš pracovat se seznamy. Prostě seznam je nativní způsob ukládání něčeho v paměti při interaktivní práci, nezávislý na užitém programátorském paradigmatu

A teď je otázka - existuje nějaký "nativně seznamový" způsob persistentního ukládání dat? Jistě: samotný soubor je seznam bytů. Jenže ten je na nějaké rozumné používání hrozně nešikovný, je třeba nad ním udělat nějakou abstrakci. Tak jakou? Za "seznamovou" by se mohla částečně považovat stromové databáze, nebo jejich moderní inkarnace dokumentové databáze. Ale i tam (např. Mongo) jsou na hlavní úrovni kolekce, tedy množiny. A uvnitř sice jsou seznamy, které se velmi snadno mapují na "objekty" (ve skutečnosti na struktury pro interaktivní práci), což je velmi výhodné.....dokud nepotřebuji pracovat se "seznamy" napříč stromy. Nebo s vlastnostmi v jiném pořadí, než v kterém jsou uložené. Pak se najednou elegance těchto databází ztrácí.

Stejnětak vlastně filesystém - navenek je to stromová struktura, ale seznam souborů v adresáři není seznam, ale set, který se jednou řadí tak, jednou jinak. Stejnětak filesystém samotný je vlastně multiset datových bloků, s nějakým indexem vybudovaným nad tím setem. Když se zamyslíš, tak v podstatě každý aspoň trochu použitelný způsob práce s perzistentními daty daleko spíš připomíná práci se sety, než práci se seznamy.

To, co popisuješ není nekompatibilita mezi OO a SQL, ale je to obecně konflikt mezi strukturami vhodnými na interaktivní práci: kde z principu fungování paměti je výhodné sekvenční zpracování seznamů, a strukturami vhodnými na persistentní storage a vyhledávání dat, kde obecnost matematického množinového popisu poskytuje možnosti, které žádný "list-based approach" přinést prostě nemůže.A v podstatě i odrazem toho jsou debaty mezi SQL a NoSQL táborem: kdy jedni preferují snadnost eleganci a univerzalitu toho množinového popisu, za cenu té nikoli nekompatibility, ale práce navíc při mapování mezi těmi světy. Protože nekompatibilní to není, existuje tam bijekce. Jen je to práce navíc to "namapovat". A právě proto vznikly ORM, aby tu práci navíc co nejvíce odstínily (byť samozřejmě ne zadarmo).

A jsou lidé, kteří místo toho se snaží o co nejpřímější mapování "paměti" do persistentního úložiště, a Ti preferují jednoduchost NoSQL databází, kde je to mapování podstatně jednodušší. Ale ani jeden přístup není "ten jediný správný". Jsou případy, kde univerzálnost toho množinového popisu dalece převáží práci navíc, vynaloženou na mapování mezi těmi světy. A jsou případy, kdy tomu tak není a opravdu přímý "dokumentový" přístup je rychlejší.

A ani jeden z nich nebude mít pravdu, když bude tvrdit, že jeho přístup je "ten nejlepší na vše". Někdy se hodí mít úložiště "univerzální" za cenu té vícepráce - a někdy je ta vícepráce zbytečná.

"Seznamový" pohled na data není nic jiného, než "znásilnění" dat do formátu, s kterým se "algoritmicky dobře pracuje". A jak to u takovéhoto znásilnění bývá, tak je vhodné do té doby, dokud se nad danými daty používá "jeden způsob zpracování", pro který je vhodné způsob uložení dat optimalizovat.
Relační způsob je univerzální. Není "znásilněný", takže v něm jde všechno "dobře". Ale samozřejmě není optimalizovaný pro ten "jeden preferovaný způsob tak", jako stromové/dokumentové databáze.


Citace
Způsobů mapování objektů na relace je vícero, určitě ne jeden.
To bych se hádal. Pokud nebereš alternativy, které tu někdo zmiňoval, jako JSON a pole - což je jen jiná forma denormalizace, tak daná datová struktura má IMHO 1:1 rozpad na relace. Nebo máš nějaký konkrétní případ, kde to bude jinak?To, v čem se struktury liší je případně návrh té ukládané datové struktury, kdy se třeba někdy přizpůsobuje, aby se uložila do db vhodným způsobem, ale pokud máš nějakou strukturu entit a jejich vazeb, tak je rozpad na relace jednoznačný. Alespoň ve smyslu jako v příkladu níže.

Citace
V DB NoSQL se používají právě ty seznamy proto, aby se tím lesem nemuselo zbytečně courat, to je pazvyk z RDB.
Ne, to není pazvyk z RDB, to je prostě nutnost. Pokud máš učitelský sbor, a chceš jednou "seznam" učitelů, co učí danou třídu, podruhé seznam učitelů, co učí v dané učebně, potřetí seznam těch, co...., a počtvrté seznam žáků, co...., tak se prostě courání přes les principiálně nevyhneš.
Samozřejmě, jde to "emulovat" tak, že máš ve stromě uložen seznam "idček". Jenže to už je lezení přes strom a když se nad tím zamyslíš, tak nejde o nic jiného, než o zakuklený relační přístup.
Někdy to jde také řešit duplikací dat na více místech - ale ani to není jiného, než denormalizace v SQL, která je sice užitečná, ale vždy problematická, takže se Ti najednou výhodnost NoSQL začne ztrácet.

Citace
Chybně navržených relačních modelů jsem viděl dost.
Ano, chybně. To je právě to ono. Relační model je buďto správný, nebo chybný. Stromový model může být zcela správně: tedy může do něj být bez problémů zachytitelná jakákoli "realizace daného axiomatického systému" - prostě do něj zachytíš jakoukoli "validní" situaci, a přesto může být pro dané použití naprosto nevhodný. Např. když uděláš stromeček kdy budou nahoře žáci, pod každým žákem seznam jejich předmětů a pod každým předmětem jeho učitel, tak se Ti s tím při vytváření rozvrhu tříd bude pracovat fakt blbě. Ale datový model bude správně: korektně popíše jakoukoli "validní" situaci.
Relační model: kdy budeš mít množiny učitelů, žáků a předmětů a vazby mezi nimi, je daný jednoznačně, a když ho udělá člověk správně, tedy bude respektovat kardinalitu vazeb a z ní plynoucí způsob realizace této vazby, tak je právě jedna implementace takového "systému". A v této implementaci bude realizovatelný "jakákoli" úloha, kterou si vzpomeneš.

 

80
Vývoj / Re:Rada při návrhu db tabulek
« kdy: 23. 06. 2021, 16:29:02 »
Citace
jehož vnitřní uspořádání je zapouzdřené a nikomu do něj nic není... [/size]najednou se to blbě napasovává třeba na relační databázi...
Když je dobře udělanej datovej objekt, tak se Ti IMHO na relační databázi pasuje úplně stejně dobře, jako "surová data" ve formě ntic.

Citace
, prostě ji pošleš dál nebo ji něčím rozšíříš, abys dostal kýžený tvar, se kterým chceš pracovat[/size]
To imho není dobrá strategie. Kód by měl mít nějakou "kulturu" a mezi to patří i rozumně definované interfacy (nikoli v objektovém smyslu) funkcí. Když rozumně navrhneš datové struktury, tak - ať už jim budeš říkat objekt, ntice nebo nevímjak - tak bys s nimi neměl mít potřebu pokaždé manipulovat na jiný tvar.


Já osobně mám zkušenost, že nejlepší architektura SW je taková, kde ten SW pokudmožno co nejlépe "modeluje realitu". A pokud tomu tak je, pak model objektů (datových struktur) jde na DB napasovat dobře, protože ta má také modelovat realitu. Samozřejmě, že to nesmí bejt tak, že DB dělá jeden člověk, návrh datových struktur v backendu někdo jiný, a pak se divěj, když každej zjednodušší realitu (protože vždy je třeba zjednodušit) jinak...


Ale to je problém vždy: i když nebudíš mít nějak vynucené datové struktury, tak si třeba krátkodobě pomůžeš tím, že tam, kde se Ti to tluče, tak to "nějak vohneš". Ale z dlouhodobého hlediska je vždy lepší to zrefaktorovat tak, aby si interfacy sedly. A pokud je interface na druhé straně neměnný (3rd-party library) tak zas není dobrá strategie se ji "přizpůsobovat" (co když to v další verzi změní), ale lepší je zavést si tam konverzí funkce.

81
Vývoj / Re:Rada při návrhu db tabulek
« kdy: 23. 06. 2021, 13:49:30 »
PanVP:

Citace
ORM - rovnák na vohejbák.
Ne, to není rovnák na vohejbák. To je způsob, jak si zjednodušit práci se SQL databází, aniž bys ztratil možnost používat některé možnosti SQL, které v NoSQL přístupu prostě nemáš. Dívej se na to jako na vícevrstvou technologii: narozdíl od NoSQL, kterej je monolit a máš přístup jen do nejvyšší vrstvy, v ORM máš možnost, když "standadní implementace nevyhovuje", jít o vrstvu níž a získat to, co potřebuješ, efektivně.

Samozřejmě za to i platíš (např. vznikají problémy, jestli má být logika v DB nebo v APP) - každá technologie má své silné a slabé stránky.
Citace
jak jsem se drbal s návrhem databáze pro tak triviální věc
Sorry, ale todle není problém SQL, ale toho, že s SQL nemáš praxi. Což není nic špatného, dokumentuje to jednu z nevýhod SQL: pomalejší křivku učení.

Citace
Proč bych se měl drbat se složitou konstrukcí tabulek, když to vyřeší objektová případně nosql databáze?
Úplně stejně Ti můžu odpovědět. Proč bych se měl drbat dokolečka s psaním rutin na vyhledávání těch správných záznamů v NoSQL, když v SQL to mám zadarmo, a podstatně výkonnější (u složitějších dotazů), než je schopen napsat za rozumný čas jeden člověk?
Ona složitost SQL dekompozice je ve skutečnosti jen zdánlivá nevýhoda. Když to umíš, tak bez probléímů rychle a správně rozložíš cokoli do SQL relací zcela automaticky a rychle. Jasně, ne tak rychle, jako v NoSQL, ale oproti implementaci logiky to rychlé je.
 To, co je velká výhoda NoSQL přístupu pro jednodušší projekty - superrychlej návrh struktury, protože do ní nacpeš "cokoli jakkoli" je ve skutečnosti zároveň slabina NoSQL. Protože zatímco v SQL máš danej formát rozpadnutí na relace, kterej je pro danou "logickou strukturu" jeden, NoSQL je v podstatě moderní reinkarnace stromových databází. Se všemi plusy: snadná práce s daty, když "lezeš po stromě" a mínusy: když potřebuješ chodit "napříč lesem" - a tedy nutností dobře navrhnout strukturu stromečků.

Takže zatímco v SQL databázi se navrhuje databáze "automaticky" a při dodržení patřičných pravidel to "nejde udělat blbě" (trochu přeháním, ale v porovnání s NoSQL to platí), v NoSQL u složitějších případů je poměrně podstatné, jestli se člověk na začátku vývoje "strefí" do datové struktury, která bude vhodná i třeba po letech - a tedy narozdíl od SQL databáze by ses tedy měl podstatně více drbat s analýzou dat, budoucích požadavků atd.... Anebo daleko víc času, než jsi získal "superrychlým první návrhem", ztratíš refaktory databáze když zjistíš, že tam nějaký požadavek nejde udělat efektivně.

===

Ink:Problematičnost OOP se týká toho, jestli a jak je správné "bundlovat" data a kód - a to se vůbec netýká toho, jak jsou data uložena. Kolekce nějakých datových struktur a potřebu jejich persistentního uložení (často včetně požadavků na transakce) máš snad u každého (reálně použitelného) programátorského paradigmatu.

82
Vývoj / Re:Rada při návrhu db tabulek
« kdy: 22. 06. 2021, 19:21:11 »
PanVP:To není realita, ale velmi jednostranný pohled. Respektive to cherry-pickuje zrovna ten příklad, pro který jsou dokumentové databáze (skutečných objektových moc není) opravdu vhodné.

V realitě často potřebuješ nejen koupit vybraný stromek, ale třeba najít ten, který má nejtmavší jehličí na druhé větvi od spoda. S relačními stromky prostě najdeš to jehličí, a pak se zeptáš prodejce, kterýmu že stromku to jehličí patří, on se podívá do papírů s podivným jménem index a během chvilky Ti to řekne.
Zatímco "dokumentový" prodejce v takovém bude v takovém případě dokolečka běhat přes prodejní plochu a nadávat jako špaček, protože Ti bude nosit jeden stromek za druhým, jen aby sis porovnal barvu jehličí na té správné větvi.

Každá technologie má své + a - a neexistuje "jediná správná technologie". Jen vhodné technologie na dané konkrétní nasazení. Přičemž jich může být i více, a ta vhodnost záleží i na tom, co daný člověk umí: u věcí "na hranici" ať to radši Mongař dělá v Mongu a nesnaží se o SQL, i když třeba by SQL přístup přinesl nějaké výhody - a naopak když se bude člověk s dokumentovou databází snažit pracovat "relačně", tak taky vznikne prasopes.

Takže jako vtip je to dost dobrý, ale dělat z toho nějakou hlubokou pravdu je ulítlý....

83
Server / Re:Sběr dat z louky
« kdy: 11. 06. 2021, 10:59:36 »
Btw, přemejšlel jsi nad solárním článkem? Jeden ne moc velkej článek by spolu s nějakou rozumně velkou powerbankou (nebo možná autobaterií a step-down konvertorem?) mohl v poho napájet jedno RPi zero, který by posbíralo údaje od těch atmelů a poslalo je dál. Místo starostí o X malejch baterek, který bys musel furt nějak dobíjet, bys tam měl jedno pořádný...

84
Software / Re:Zaseklý proces nereaguje na kill -9
« kdy: 02. 06. 2021, 12:33:47 »
Dík za rady, koukám, že přemejšlím stejným způsobem :-), než jsem se zde ptal, tak už jsem udělal BTRFS scrub, memtest paměti, smart na disk, vše se zdá Ok.

Swap je na samostatném oddíle, pro jistotu jsem ho znovuvytvořil. A updatoval jsem na novější ubuntu, bych tam dostal nové jádro, tak uvidím...

85
Software / Re:Zaseklý proces nereaguje na kill -9
« kdy: 01. 06. 2021, 22:38:08 »
PS: Jádro je
5.8.0-53-generic #60-Ubuntu SMP
ale zatím jsem nevygooglil nic, k čemu by se to molo vztahovat

86
Software / Re:Zaseklý proces nereaguje na kill -9
« kdy: 01. 06. 2021, 22:31:57 »
Update: tak se mi to stalo znova. Tentokrát proces je zcela jistě regulérní zombie, ale nejde zabít ani metodama, co tu radil Petr Krčmář - waitpid v gdb se zavěsí a neskončí, kill -s SIGCHLD 1 proběhne bez efektu.


Sirotek je zombie proces pověšenej přímo pod initem. A zároveň je něco blbě se samotným initem: systemctl daemon-reload "zatuhne navždy", ps a se nedokončí a zavěsí atd....

V logu jsem našel toto:
Kód: [Vybrat]

čen 01 21:46:36 host kernel: BUG: unable to handle page fault for address: 0000000000003af0
čen 01 21:46:36 host kernel: #PF: supervisor read access in kernel mode
čen 01 21:46:36 host kernel: #PF: error_code(0x0000) - not-present page
čen 01 21:46:36 host kernel: PGD 0 P4D 0
čen 01 21:46:36 host kernel: Oops: 0000 [#2] SMP PTI
čen 01 21:46:36 host kernel: CPU: 3 PID: 130 Comm: kswapd0 Tainted: P      D    OE     5.8.0-53-generic #60-Ubuntu
čen 01 21:46:36 host kernel: Hardware name: Dell Inc. Latitude 5590/02N9PD, BIOS 1.16.3 03/05/2021
čen 01 21:46:36 host kernel: RIP: 0010:__clear_extent_bit+0xfa/0x4b0 [btrfs]
čen 01 21:46:36 host kernel: Code: 02 00 00 8b 55 d0 85 d2 0f 85 3f 01 00 00 49 8b 3c 24 48 85 ff 75 08 e9 46 01 00 00 48 89 d7 48 8d 47 f0 48 8d 57 10 49 89 c1 <4c> 3b 77 f0 72 0a 4c 3b 77 f8 76 30 48 8d 57 >
čen 01 21:46:36 host kernel: RSP: 0018:ffffb2e5c03179e0 EFLAGS: 00010206
čen 01 21:46:36 host kernel: RAX: 0000000000003af0 RBX: fffffffffffffffe RCX: 0000000000000000
čen 01 21:46:36 host kernel: RDX: 0000000000003b10 RSI: ffffffffc0654691 RDI: 0000000000003b00
čen 01 21:46:36 host kernel: RBP: ffffb2e5c0317a38 R08: ffff8e9cde4f2230 R09: 0000000000003af0
čen 01 21:46:36 host kernel: R10: ffff8e9943cba240 R11: 0000000000000001 R12: ffff8e9acac8b388
čen 01 21:46:36 host kernel: R13: ffff8e9bb82d0280 R14: 0000000000000000 R15: 0000000000000000
čen 01 21:46:36 host kernel: FS:  0000000000000000(0000) GS:ffff8e9cde4c0000(0000) knlGS:0000000000000000
čen 01 21:46:36 host kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
čen 01 21:46:36 host kernel: CR2: 0000000000003af0 CR3: 00000002099da001 CR4: 00000000003606e0
čen 01 21:46:36 host kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
čen 01 21:46:36 host kernel: DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
čen 01 21:46:36 host kernel: Call Trace:
čen 01 21:46:36 host kernel:  clear_extent_bit+0x18/0x20 [btrfs]
čen 01 21:46:36 host kernel:  btrfs_inode_clear_file_extent_range+0x49/0x50 [btrfs]
čen 01 21:46:36 host kernel:  btrfs_destroy_inode+0x135/0x240 [btrfs]
čen 01 21:46:36 host kernel:  destroy_inode+0x41/0x80
čen 01 21:46:36 host kernel:  evict+0x14c/0x1b0
čen 01 21:46:36 host kernel:  prune_icache_sb+0x81/0xb0
čen 01 21:46:36 host kernel:  super_cache_scan+0x169/0x1f0
čen 01 21:46:36 host kernel:  do_shrink_slab+0x14f/0x2a0
čen 01 21:46:36 host kernel:  shrink_slab_memcg+0xd0/0x1d0
čen 01 21:46:36 host kernel:  shrink_slab+0x109/0x120
čen 01 21:46:36 host kernel:  ? shrink_slab+0x109/0x120
čen 01 21:46:36 host kernel:  shrink_node_memcgs+0x72/0x190
čen 01 21:46:36 host kernel:  shrink_node+0x152/0x530
čen 01 21:46:36 host kernel:  balance_pgdat+0x270/0x550
čen 01 21:46:36 host kernel:  kswapd+0x103/0x1c0
čen 01 21:46:36 host kernel:  kthread+0x12f/0x150
čen 01 21:46:36 host kernel:  ? balance_pgdat+0x550/0x550
čen 01 21:46:36 host kernel:  ? __kthread_bind_mask+0x70/0x70
čen 01 21:46:36 host kernel:  ret_from_fork+0x22/0x30
čen 01 21:46:36 host kernel: Modules linked in: usbhid cdc_ether usbnet r8152 mii typec_displayport rfcomm vboxnetadp(OE) vboxnetflt(OE) vboxdrv(OE) ccm cmac algif_hash algif_skcipher af_alg snd_hda_codec_hdm>
čen 01 21:46:36 host kernel:  processor_thermal_device fb_sys_fops serio_raw dcdbas syscopyarea soundcore ucsi_acpi intel_rapl_common dell_wmi_descriptor typec_ucsi intel_wmi_thunderbolt hid_multitouch cfg802>
čen 01 21:46:36 host kernel: CR2: 0000000000003af0
čen 01 21:46:36 host kernel: ---[ end trace e50abd9f6f57e042 ]---
čen 01 21:46:36 host kernel: RIP: 0010:vfs_getattr_nosec+0x90/0xc0
čen 01 21:46:36 host kernel: Code: 00 00 89 06 41 8b 41 0c f6 c4 08 74 0c 48 c7 46 10 00 10 00 00 41 8b 41 0c f6 c4 20 74 08 48 81 4e 10 00 00 20 00 49 8b 41 20 <48> 8b 40 70 48 85 c0 74 15 81 e2 00 60 00 00 >
čen 01 21:46:36 host kernel: RSP: 0018:ffffb2e5c0bc7e18 EFLAGS: 00010246
čen 01 21:46:36 host kernel: RAX: ffffffff8064c9c0 RBX: ffffb2e5c0bc7e80 RCX: 0000000000000000
čen 01 21:46:36 host kernel: RDX: 0000000000000900 RSI: ffffb2e5c0bc7e80 RDI: ffffb2e5c0bc7f10
čen 01 21:46:36 host kernel: RBP: ffffb2e5c0bc7e18 R08: ffffb2e5c0bc7e30 R09: ffff8e9b6ab18240
čen 01 21:46:36 host kernel: R10: 00000000000007ff R11: 000000000000006f R12: 0000000000000000
čen 01 21:46:36 host kernel: R13: 00000000ffffff9c R14: 000000c0047fa400 R15: 0000000000000900
čen 01 21:46:36 host kernel: FS:  0000000000000000(0000) GS:ffff8e9cde4c0000(0000) knlGS:0000000000000000
čen 01 21:46:36 host kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
čen 01 21:46:36 host kernel: CR2: 0000000000003af0 CR3: 00000002099da001 CR4: 00000000003606e0
čen 01 21:46:36 host kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
čen 01 21:46:36 host kernel: DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
čen 01 21:46:37 host kernel: BUG: unable to handle page fault for address: 000000000000c4f0
čen 01 21:46:37 host kernel: #PF: supervisor read access in kernel mode
čen 01 21:46:37 host kernel: #PF: error_code(0x0000) - not-present page

Takže moje "divoká hypotéza" je, že v kernelu něco spadne, zřejmě neuvolní nějakej zámek, a některý věci v initu pak přestanou fungovat (např. čekání na zombíky), protože je ten zámek blokuje. Asi nic jinýho, než downgrade jádra nepomůže?

 

87
Software / Re:Zaseklý proces nereaguje na kill -9
« kdy: 01. 06. 2021, 18:29:53 »
Děkuju za odpovědi. Že je to zombie jsem si nevšiml, to vysvětluje tu "nesmrtelnost" - ale neměla by zombie "nedělat nic"? Tedy to bejt už ukončenej proces? Tendle prokazatelně (podle výpisu i loadu) běžel. Něco tam muselo bejt blbě....

Nicméně bohužel jsem ten stroj musel stejně restartnout z jinýho důvodu (blbo tam ještě něco jinýho), takže víc o tom nezjistím.  V každém případě díky za triky, co s tim.


88
Software / Re:Zaseklý proces
« kdy: 01. 06. 2021, 11:48:02 »
Ale furt žere 100% procesoru....

89
Software / Zaseklý proces nereaguje na kill -9
« kdy: 01. 06. 2021, 11:24:27 »
Ahoj,běží mi proces, v topu vypadá takto:
Kód: [Vybrat]
%Cpu(s):  1,5 us, 14,3 sy,  0,0 ni, 84,1 id,  0,0 wa,  0,0 hi,  0,1 si,  0,0 st
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   1149 logik     31  11       0      0      0 Z 100,0   0,0 145:21.36 syncthing

Na sudo kill -9 1149 nijak nereaguje.

Co s tím? Chápu dobře, že se zasekl na nějakém volání v jádře, které ho nepustí "ven", takže jediné, co pomůže, je restart?
Nebo je ještě nějaký způsob, jak ho zabít?
Dík za radu.



90
Server / Re:Záchrana dat z úložiště se SunOS
« kdy: 31. 05. 2021, 13:32:48 »
Vůbec to neznám, takže "střílím od boku", ale - chápu dobře, že jsi se s původníma datama rozloučil a chceš tam nacpat zálohy?Pokud ano, není nejjednodušší cesta tam přes sambu něco nahrát a pak to ve FS vyhledat?
Nicméně, pokud zmizela data, nemůže bejt problém v tom, že se tam něco odmountlo? A ta konfigurace je tam? Ta samba teď běží, akorát na ní nic není?

Pokud tam běží samba, nejde z její commandline něco vyčíst? Nebo pokud to nejde z commandline, tak ji zabít a pustit s strace a koukat se, co čte a tak najít konfiguráky?

Stran: 1 ... 4 5 [6] 7 8 ... 68