Android-14 telefon a sok fájlt (50e+) tartalmazó mappákat nagyon lassan kezeli.
Ugyanazt a mappát egy másik Android-8 telefon elfogadható sebességgel kezeli.
Próbáltam különféle teszteket mindkét telefonon, és PC-n is összehasonlításul.
Disk RD/WR [MByte/sec]: Android-14: 500/290; Android-8: 100/53; Laptop: 410/310
Vagyis ez alapján azt várnám , hogy az Android-14 legyen a leggyorsabb, de nem!
56000 fájlt tartalmazó directory lista beolvasása [sec]: Android-14: 6....17; Android-8: ~1; Laptop: 0.16
A 6...17 másodperc nem elírás! Van hogy 17 másodpercig tart, mire beolvassa a listát. Hogy mikor meddig tart az véletlenszerű.A többi eszköznél az első beolvasás lassabb, és a többi gyorsabb. Az Android-14 esetén lehet, hogy elsőre 6 sec, és közvetlenül utána megismételve 11 sec.
stat 56000 fájlon [sec]: Android-14: 0.08...0.8; Android-8: 0.1...0.18; Laptop: 0.06...0.22
10000 fájlt tartalmazó directory lista beolvasása [sec]: Android-14: 0.33; Android-8: 0.16; Laptop: 0.01
stat 10000 fájlon [sec]: Android-14: 0.01; Android-8: 0.1; Laptop: 0.01
Valami ötlet?
------------------------------------- kiegészítés 2025.03.25. 18:01
Az Android-14-en a fájlok áthelyezése is megdöbbentően lassan megy. kb 100 db fájl/másodperc
(Nem másolás! Áthelyezés egyik mappából a másikba.)
- 1281 megtekintés
Hozzászólások
Szerintem ez a Linuxon is általában egy probléma, már annak, aki a Windowshoz szokott.
- A hozzászóláshoz be kell jelentkezni
Engem a reális use case érdekelne.
Aláírás _Franko_ miatt törölve.
RIP Jákub.
neut @
- A hozzászóláshoz be kell jelentkezni
Ez a realis use casek foruma?! :D
- A hozzászóláshoz be kell jelentkezni
Az 56000 fájl egy angol hangos szótár. 11230 szó és mindegyikhez 4 db m3 hang.
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
Szarul van strukturálva.
Aláírás _Franko_ miatt törölve.
RIP Jákub.
neut @
- A hozzászóláshoz be kell jelentkezni
Nem szeretnék most arról vitatkozni, hogy hogyan írok programot. Már írtad, hogy tákolmány amit csinálok, most azt írod, hogy szar. Csak azt tudom erre mondani, jó neked, hogy ilyen okos vagy.
Megkérdezem most az okos embereket:
Ha kipróbáltam a témaindítóban leírt dolgot több Linuxon, egy Windowson és két Androidon, és ezek közül csak az Android-14 esetén van probléma. Pont azon az eszközön, aminek a lemez olvasási sebessége a teszteltek közül a legjobb (500 Mbyte/sec)? Nem elképzelhető, hogy az A-14 oprendszerrel van gond?
Nem lehet, hogy érdemes lenne esetleg nektek is megpróbálni, a közeletekben elérhető néhány gépen?
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
A hasonló dolgokat úgy szokták mappákba rendezni (a fenti hibákat elkerülendő), hogy pl A-F, G-J, K-M .... stb mappákba rendezik, így nem kerül több tízezer fájl egy mappába.
Nem lehet, hogy érdemes lenne esetleg nektek is megpróbálni, a közeletekben elérhető néhány gépen?
Engem nem érint a probléma, mivel nem használom a szóban forgó szoftvert. Ez a userbase problémája (ami szerintem jelenleg kimerül benned), majd ők tesztelik.
Aláírás _Franko_ miatt törölve.
RIP Jákub.
neut @
- A hozzászóláshoz be kell jelentkezni
Sok évvel ezelőtt tanult kollégák alkalmazást akartak fejleszteni/venni az egy mappán belüli nagyon sok fájl (több száz ezer) kezelésére. A szkenner automatikusan gyártotta ezeket a fájlokat, értelmezve azokban a vonalkódot, ami alapján elnevezte őket. Kitűnő feladat az "imaging rendszer" beszerzésére (vagy fejlesztésére, már nem emlékszem pontosan). Az akkori aktuális Gizike figyelt, hallgatott és megjegyezte, nem érti minek. Ő Windowsban szocializálódott, beizzította a W7-et és a fájlkezelőben kattintásra kilistázta az egészet, sőt, keresett is benne mindenféle wildcarddal. Villanás alatt ment minden (pedig a SAMBA-n volt a mappa, gondolom automatikusan indexelt neki a windóz). Az Ubuntu simán eltöltött perceket ugyanezzel. Nagyon régen volt, lehet, hogy nem is W7, hanem még a nagytudású XP lehetett. Nem hiszem, hogy nagyon sokat változott volna ez, lehet megnézem mit szól egy ilyen feladathoz a Thunar vagy a Caja.
- A hozzászóláshoz be kell jelentkezni
"Az Ubuntu simán eltöltött perceket ugyanezzel."
Fontos megkülönböztetni, hogy mi töltött el perceket, mert nem a Linux, hanem a fájlkezelő.
Én itt nem a fájlkezelő alkalmazásokról beszélek, hanem az oprendszerről.
A Linuxtól a Windowstól és más Androidoktól egy program a több tízezres listát tizedmásodpercek alatt megkapja.
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
> nem a Linux, hanem a fájlkezelő.
> Én itt nem a fájlkezelő alkalmazásokról beszélek, hanem az oprendszerről.
Sajnos itt bukik ki, hogy valójában fogalmad sincs miről beszélsz.
Ha egy sima ls is perceket tökörészik rajta (gyanítom, hogy ez a helyzet amúgy), akkor bizony az oprendszer tölt el ennyi időt a fájlok fellistázásával. Ugyanis - és most fogok egy meglepőt mondani, kérek egy dobpergést - a fájlkezelők valójában nem külön entitások az oprendszer mellett, hanem az oprendszert használják a fájlok listázására.
Alapvetően a listázás kettő dolgot jelent ebben a kontextusban:
- A mappa tartalmának lekérdezését - ez atomi
- Minden egyes fájl metaadatainak lekérdezését - ez fájlonként atomi.
Ez utóbbira azért van szükség, hogy lásd pl a módosítás dátumát, a chmod-ot, a tulajdonost (ez szintén fájlonként +2 OS API hívás amúgy, ha nem csak ID-ket jelenítünk meg)
Több tízezer, vagy annál is több fájl esetén ez utóbbi lépés tud nagyon lassú lenni, mert egy nagyon sokelemű ciklus fut le, optimális esetben is minimum 1, de inkább 3-4 hívással. Még egyszer: ez teljesen független a fájlkezelőktől, egyszerűen maga az oprendszer így adja vissza a válaszokat.
Mentül lassabbak az egyes műveletek, és mentül több elemet kell lekérdezni, antul tovább tart az egész mappa tartalmának a listázása.
A Windows azért tud gyors lenni, mert a gyakran használt mappákat - hacsak teheti - agyoncacheli, így relatíve gyorsak a műveletek, főleg, ha nem másodpercenként többezer tartalom módosul az adott mappán belül. Ez nem teljesen az oprendszer érdeme - amennyire emlékszem, erre van külön szolgáltatás, de azt meg nem mondom, melyik. Mindenesetre mindegy is, mert Linuxon ilyen nincs, kernel szinten beépített semmiképpen.
Azért javasolják, hogy tördeld mappákra a fájljaidat, mert akkor kisebb lesz a fent említett ciklus, ráadásul gyorsabban is megfut, az alkalmazásodnak meg tökmindegy, mert +1 stringművelettel elő tudod állítani bármely fájl útvonalát - hiszen előre definiálható feltételek mentén alakítod ki a struktúrát, kvázi meg tudod "jósolni" mi lesz a fájl neve. Minimális munkával tudsz szignifikáns teljesítményjavulást elérni.
Tudod, jó dolog önállónak lenni, és jó dolog mindenféle kódokat írogatni, de nagyon érdemes mögénézni, hogy mikor mi történik a háttérben, és mit miért javasolnak emberek. Nem kell minden javaslatot megfogadni (ezt se itt fenn), de ha legalább azt megteszed, hogy utánanézel, hogy működik a rendszer ilyenkor, az sokszor rengeteget segít a különböző problémák felgöngyölítésében.
Azt a koncepciót meg felejtsd el, hogy van az oprendszer és van a mindenmás. Mivel minden az operációs rendszer felett fut, ezért a legtöbb alkalmazás teljesítményét alapvetően tudja befolyásolni az, ha oprendszer szinten valami adott módon működik. Nyilván erre még rájön az adott alkalmazás overheadje, ezért is érdemes egy adott problémát több irányból, több különböző alkalmazással tesztelni. Ha van közös metszet, akkor lehet gyanakodni, hogy az operációs rendszer a ludas a problémában.
- A hozzászóláshoz be kell jelentkezni
Egy sima ls kapcsoló nélkül sorrendez, ahhoz idő kell. Sok file-névhez 'sok' idő. ls -U kellene.
- A hozzászóláshoz be kell jelentkezni
$ ls -f
lesz az.
- A hozzászóláshoz be kell jelentkezni
Mindkettő jó :-P
- A hozzászóláshoz be kell jelentkezni
Kivéve, hogy a -f az POSIX, a -U pedig linuxizm, ami így nem is hordozható (az otthoni asztali gépemen pl. egészen mást jelent, mint a céges laptopon) Ráadásul valami random netes man oldal szerint - legalábbis Linuxon - a -f az a "-a -U"-val egyenértékű, tehát az én megoldásom még Linux környezetben is jobbabb (FreeBSD-n is van "-a" hatása) ;-D
- A hozzászóláshoz be kell jelentkezni
Köszi a pontosítást, teljesen igazad van.
- A hozzászóláshoz be kell jelentkezni
"Sajnos itt bukik ki, hogy valójában fogalmad sincs miről beszélsz."
Nos én tudom, hogy miről beszélek, de az idézett mondatodból viszont kibukik, hogy te nem vettél annyi fáradtságot, hogy elolvasd a témanyitót, majd a követő hozzászólásokat!
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
Elolvastam, de ezerötszáz dolog lehet a dolog mögött, és nem akartam mindegyikre kitérni. Eleve két különböző telefont összehasonlítani olyan, mint az almát a szőlövel. Mindkettő gyümölcs meg kerek, van magjuk és héjuk, és ezzel ki is merült az összes hasonlóság.
Eleve azt írod, hogy az egyiken az első olvasás lassabb utána gyorsul -> disk cache. Simán lehet, hogy ez a másik telefonon lejjebb van véve, vagy több minden fut a telefonon a háttérben, emiatt a Linux kernel eleve kisebbre veszi a cache-t. Esetleg a lassabb telefonon eleve kisebb is a memória (ezt sem írod).
A másik, hogy az Android verziójától teljesen függetlenül, lehet, hogy az egyikben gyorsabb memória van (vagy SD kártya olvasó, ha azon belül helyezel át, ez nekem nem derült ki egyértelműen), a másikban meg lassabb, mert mondjuk az Andorid 14-es telefon alsópolcos a régebbiek meg flagshipek. Mivel nem írsz konkrét modelleket a telefonra, ez is csak egy vad tipp.
De még ugyanolyan telefonok esetében is előfordulhat, hogy elöregedett a memória, tele van hibákkal, a rendszer próbál kompenzálni, emiatt lassabb.
Ez csak négy dolog abból a rengetegből ami lehet emögött. És még végtelen sok. Nem látunk a fejedbe, te nem mondod el a dolgokat, de találjuk ki.
Viszont. Nem véletlenül mondtam, hogy érdemes lenne a mappákba tördelés irányába menni, mert akkor nem kell ezt a rengeteg sok mindent kidebugolni. Ha le tudod szorítani az egy mappában levő fájlok számát viszonylag kezelhető mennyiségre, akkor max a másolás lesz lassú, ami - ha jól sejtem a program célja alapján - nem állandóan történik, hanem csak néha másol valamit valahova (mondjuk backupol). Vagyis a programod egésze szignifikánsan gyorsulna attól, amitől most oly mereven elzárkózol.
Az a baj, hogy nagyon a fejedbe vetted, hogy amit te csinálsz, az nem lehet hibás, kizárólag a rendszer lehet szar. És a rendszer szar is, ebben nincs vita köztünk, de ez nem jelenti azt, hogy amit te csinálsz, az jó is.
- A hozzászóláshoz be kell jelentkezni
Még mindig nem olvastad el amiket írtam:(
Leírtam : az Android-8 disk read: 100 MByte/sec; Android-14 500 MByte/sec.
Leírtam: Android -14 Motorola g34 5g; most leírom Android-8: DIGI R1
Tudom mi a disk cache, azt viszont nem értem, hogy a 8 GBytos meóriával rendelkező A-14 miért működik úgy, mintha nem lenne benne disk cache!
Ez az egész szál nem arról kéne, hogy szóljon, hogy az én programom mit tud vagy mit nem, hogy értek-e a programozáshoz, vagy nem. A téma az, hogy a google megint tovább rontotta-e a Linuxot! Szerintem igen!
Ha viszont a felmerült gyanút megnéznétek végre a saját telefonotokon, akkor előre tudnánk lépni.
Érdemes lenne azon is elgondolkozni, hogy a google azzal az álságos maszlaggal, hogy vigyáz a telefonod akkumulátor fogyasztására, ellehetetleníti az app-ok háttérben való működését, felülbírálja, ha te beállítottad, hogy egy app milyen jogosultságokkal bír! Mindezek után amit egy normális Linux 0.15 sec alatt megcsinál, azzal elpöcsöl 17 másodpercig, akkor hányszorosát zabálja meg az akku energiájának. Érdemes lenne még azt is észrevenni végre, mennyire álságos egy olyan cégnek akkumulátor élettartam védelméről hadoválni, aki C helyett javaban írja a programjait! (kb. háromszor annyit zabál az akkumulátorból!!!)
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
"Leírtam : az Android-8 disk read: 100 MByte/sec; Android-14 500 MByte/sec."
Mi meg többször is leírtuk, hogy ez vagy számít, vagy nem. Számít, ha egy nagy .iso fájlt olvasol, és valószínűleg egyre kevésbé számít, amikor a hasznos adat olvasásához képest sok az egyéb, pl. fopen szerű hívás. Pláne ha valami okos dolog előbb minden ilyet kétszer körbeszimatol, hogy van-e jogod hozzá.
Unixokon ilyenkor pl. lehet nézni, hogy mit ír a *stat, *top, mindenki kedvenc fétise arra vonatkozólag, hogy teker-e a "disk"*, azaz a block device, vagy csak mélán pöcköli az adatot, amikor végre kéri tőle valaki. Lövésem nincs, hogy Androidra mit lehet ilyenkor feltenni, de van itt annyi kiváló fejlesztő, nyilván tudnak írni pár tippet profilerre.
*) Most azért igen valószínű hogy nem.
- A hozzászóláshoz be kell jelentkezni
"A téma az, hogy a google megint tovább rontotta-e a Linuxot! Szerintem igen!"
Csak halk megjegyzés... Ha tényleg ekkora visszaesés lenne a teljesítményben, akkor vajon hányan vernék az asztalt a Google-nél? Hány fejlesztő, nagyobb ügyfél akarná rájuk borítani az előbb említett bútordarabot? Szerinted az összes Google és 3rd party (telefongyártók pl.) tesztelés során performancia nem volt terítéken? Vagy volt, de mindenki hülye, és senkinek nem tűnt fel a dolog? Mert ilyen regressziónak már az első teszteken ki kellett volna buknia, és nem production-be engedni... (Jó, tudom, Linuxon is volt el...rontott talán ext3(?) fs módosítás, ami után sürgősen vissza kellett bootolni az előző kernelt, mert fosch lett a teljesítmény...)
- A hozzászóláshoz be kell jelentkezni
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
UTF-es fájlnevekre biztosan...
- A hozzászóláshoz be kell jelentkezni
Tehát szerinted az nem is hiba, ha egy rendszeren létre lehet hozni oyan fájlt, amit aztán semmivel nem lehet letörölni?
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
*Ha* a nevében lehetetlen karaktereket tartalmazó fájl i-node számát ki lehet nyerni (klasszikusan ls -i vagy stat / fstat parancs), akkor azért egy find . -maxdepth 1 -inum XYZ -delete parancsot érdemes lehet megnézni mielőtt törölhetetlennek minősítjük. (Mondanám a clri - Clear i-node - parancsot, de az egyrészt nem annyira jellemző Linuxon, másrészt annak kellemetlenebb a használata.)
Ha pedig így működik, akkor ez nem hiba, max PEBKAC.
- A hozzászóláshoz be kell jelentkezni
Ott a pont. A név - i-node feloldást a poszt-toló által próbált eljárásoknak is meg kell csinálni, és vagy sikerül nekik, vagy sem, vagy bájtra pontosan kapják meg a nevet (pontosan azt a bájtsorozatot, ami a directory fájlban van), vagy nem fogják megtalálni.
Lehet egyébként olyan pebkac is (ilyet láttam...), hogy a kód egyik része 8 bitesen lett szerkesztve/elmentve, a másik meg már UTF-ben, és ugye onnantól az "árvíztűrő satöbbi" konstans totálisan másképp néz ki az egyik illetve másik esetben a lefordult kódban...
- A hozzászóláshoz be kell jelentkezni
Bakker, néha csak nézek, hogy 15 év linux után milyen frappáns (és általam nem ismert) megoldások is léteznek... Na, ide kellene a +100 gomb! :-)
- A hozzászóláshoz be kell jelentkezni
Nem lehet így sem törölni.
Az inode szám kinyerhető. Pl ls -a -i:
......... 303232 Iratt\341r.csc ........
Amit írtál:
find . -maxdepth 1 -inum 303232 -delete
nem törli ki. Viszont a:
find . -maxdepth 1 -inum 303232 -print
az szépen kiírja a nevét.
Az egyéb "szabályos nevű" fájlokra persze működik amit írtál.
A C programból nézve az open, read, write, close, stat az működik, de a rename, remove az nem.
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
gondolom nem rootolt a telefon
https://android.stackexchange.com/questions/206212/delete-file-with-spe…
Gábriel Ákos
- A hozzászóláshoz be kell jelentkezni
"semmivel nem lehet"
Gondolom nem próbáltál meg mindent _is_, és ahogy Zahy is írja, az i-node a releváns, az, hogy a directory fájlban mi szerepel a fájl neveként, nos, az egy absztrakciós réteggel odébb van.
- A hozzászóláshoz be kell jelentkezni
"Engem nem érint a probléma, mivel nem használom a szóban forgó szoftvert."
A szóban forgó szoftver az Android-14. Nem használod? Nem használja más csak én?
Nem kell használnod az én programomat. Írj valami saját kis tesztet!
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
A szóban forgó sw nem az OS, hanem a te programod, ami a szokásos fájlmennyiséghez képest nagyságrendileg többet tárol egy könyvtárban. Nem ilyen use-case amire az adott fájlrendszert optimalizálták. Igen, fejlesztőként most jött el az ideje annak, hogy a fájlok kezelését refaktoráld, újragondold, vagy úgy, hogy saját indexet kreálsz a fájlokhoz (ha azok nem változnak), és ezt az indexet használd keresésre/listázásra, vagy az állományokat valamilyen elv alapján csoportosítva alkönyvtárakba rendezed, és ezeken keresztül kezeled az egészet. (Mondjuk a szavakhoz tartozó négy fájlt négy külön mappába...)
A szituáció nekem arra a sztorira hajaz egyébként, amikor egy alkalmazás szakmányban f0sta a /tmp -be az átmeneti állományait minimális méretben ugyan, de számosság tekintetében szinte a csillagos ég volt a határ - és ezeket cron-ból próbálták takarítani a find használatával, fájlnév meg ctime/mtime/atime fene tudja melyiket vizsgálva. Na ez a find képes volt órákig molyolni, egymásra futni - gyakorlatilag nem működött. (Fentebb le lett írva, hogy egy könyvtár kezelése, listázása, fájlok kiválogatása fájlonként n darab rendszerhívás alapesetben). Megoldás az volt, hogy saját programmal könyvtár megnyit, végigolvas, névre mintát illeszt, ha az sikeres, akkor stat(), és ha a releváns időadata olyan, akkor unlink(). A legdurvább futási ideje is maximum percekben volt mérhető - igaz, ott Linux, meg VM, meg nem túl gyors tengelyes diszkekből összerakott FC-n elérhető storage volt alatta - pár millió állománnyal az ominózus könyvtárban...
- A hozzászóláshoz be kell jelentkezni
#szarazandroid, esetleg a konkrét gyártól által, a stock androidból taknyolt valami.
Nyilván érted, hogy adat-metaadat arányának romlásával arányosan kezdi elveszteni a jelentőségét, hogy mekkora a az adott "lemez" (ez már eleve lol) szekvenciális olvasási sebessége. Régen a ⸮kóklerek pl. .wad fájlokba tették az effélét. Ma sértődés van abból, ha nem tapsolnak, ha faszul csinál valaki valamit.
15-ös, stock Androidom van, ha ez segít, kipróbálhatom vele.
- A hozzászóláshoz be kell jelentkezni
Windows is elfárad pár 10k fájl felett. Ez ilyen, nem kell ennyi fájlt egy könyvtárban tartani.
- A hozzászóláshoz be kell jelentkezni
Én kipróbáltam több Linuxon, egy Windowson és két Androidon. Ezek közül csak az Android-14-en van vele probléma.
Te kipróbáltad, vagy csak tippeled?
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
A Linux 0.16sec alatt olvassa be azt az 56000-es könyvtárlistát, amit az Android-14 6...17 másodperc alatt, és az Android-8 az 5-ször lassabb lemezzel is 1 sec alatt.
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
#define "olvassa be"
Mert nagyon nem mindegy, ez számodra mit jelent...
- A hozzászóláshoz be kell jelentkezni
Pl. nem mindegy, hogy:
fisher@s3:/tmp$ time ls > /dev/null
real 0m0.398s
user 0m0.307s
sys 0m0.088s
fisher@s3:/tmp$ time ls -l> /dev/null
real 0m1.313s
user 0m0.668s
sys 0m0.632s
- A hozzászóláshoz be kell jelentkezni
Amit az induláskor írtam, az C ben írt teszt, de megnéztem parancssorból is. A Linuxon ez így néz ki:
~/.collections/db-angol-szavak-hang> date -Ins; ls -a >/dev/null ; date -Ins
2025-03-26T15:43:19,463671078+01:00
2025-03-26T15:43:19,608409211+01:00
Vagyis az 56000 fájlra ez kb 15 milisec
Az android-14-en ugyanez 3.9...7 sec. Az értékek erősen változnak. Az indítóban írt 17 sec a bekapcsolás utáni első olvasáskor jött ki.
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
Most olvasom a kiegészítést. Így egyre nyilvánvalóbb, hogy nem a block device sebessége limitál, hanem hogy az adott környezetben valami beleakaszkodik a fájlműveletekbe. Kb. mintha valami buta víruskereső lenne.
Viszont akkor nem csak akkor lassú, ha sok fájl van egy könyvtárban, hanem akkor is, ha ugyanannyi fájl van szépen szétosztva több könyvtárba. Nem tudom mekkora probléma lenne ez ellenőrizni, nekem momentán nincs rá környezetem.
- A hozzászóláshoz be kell jelentkezni
Nem túl nagy munka. Köszönöm az ötletet, meg fogom nézni.
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
"Viszont akkor nem csak akkor lassú, ha sok fájl van egy könyvtárban, hanem akkor is, ha ugyanannyi fájl van szépen szétosztva több könyvtárba. "
Megnéztem! Érdekelne ki mit tippel? Kérlek szavazzatok valamelyikre a három közül!
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
1. válasz sokkal gyorsabb lett
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
5. nem érdekel
Aláírás _Franko_ miatt törölve.
RIP Jákub.
neut @
- A hozzászóláshoz be kell jelentkezni
C program, opendir, N db readdir, closedir
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
Szerintem meg fordítva, a sok fájl kezelése Linuxon sokkal gyorsabb, mint Windows-on. Ez tényleg az a műfaj, amiben körökkel lekörözve nyer a Linux.
A kollégának azt mondanám, hogy a mobil eszközök ilyenek. Nem alkalmasak túl komoly dolgokra, meg vannak nyomorítva a korlátolt és lebutított OS-eikkel, app/store paltformjukkal, ebben Android és iOS egykutya. Egy mezei, 10+ éves laptop is állva hagyja őket emiatt, hiába erősek hardverben a mai telók.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
- A hozzászóláshoz be kell jelentkezni
Az szerintem attól függ mit értesz kezelés alatt. Egy mappában 200 ezer fájl listázásba és a mappán belüli keresésbe minden általam ismert Linuxos fájlkezelő majdnem minden hardveren belefárad. A Windows ezzel szemben összevissza indexel mindent és - talán - ebből fakadóan - is - villámgyorsan listáz, keres és talál hasonló mennyiségű fájl között egy mappában. Én itt koncepcióbeli különbséget gondolok a két rendszer között.
Ez egyébként azt hiszem a Windows egyetlen objektív előnye felhasználói oldalról. Gizike annak idején roppant jól érezte magát a Windows tudásával, az informatikus kollégák meg mindenféle menekülőpályákat javasoltak (fejleszteni kell alkalmazást ilyesmihez, venni kell kész rendszert, strukturálni kell a mapparendszert, fejleszteni kell a hálózati eszközöket, erősebb hardverrel megoldható stb. stb.).
- A hozzászóláshoz be kell jelentkezni
Na de akkor meg kétségbe esik, amikor egy nem indexelt(?) könyvtárra bukkan. Nálam pl. már az is szenvedés, amikor a képernyőmentéseket tartalmazó könyvtárban a rendezési sorrendet megváltoztatom. Szóval nekem még sose tűnt fel semmi előnye.
- A hozzászóláshoz be kell jelentkezni
Indexelni tudsz Linuxon is, KDE-nek meg egyes fájlkezelőnek vannak saját indexelős megoldásai, amit bekapcsolhatsz. Akkor megint csak gyorsabb lesz, mint a Windows. Az utóbbit nagyon belassítja az NTFS, GUI, meg a vírusirtó. Amikor én álltam át Linuxra, akkor az indexeletlen Linux rendszer köröket futott az indexelt NTFS-es, vírusirtót nem futtató XP köré, pedig az XP a mai Windowsokhoz képest pehelysúlyú volt, sok helyütt gyorsabb is a kevesebb bloat miatt.
Ami miatt még telefon lassú lehet, az a Flash tároló, hogy nem tisztességes SSD van benne, hanem valami ótvar MMC Flash szar, ami egy 10-20 éves USB2-es pendrive sebességével ér fel.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
- A hozzászóláshoz be kell jelentkezni
A témaindítóban van:
"Disk RD/WR [MByte/sec]: Android-14: 500/290; Android-8: 100/53; Laptop: 410/310"
Az 500 MByte/sec olvasási sebesség nem elég jó?
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
Nekem is ez a tapasztalatom, hogy a Linux a gyorsabb. Egy "git status" linuxon szemvillanás alatt lefut és ugyanarra a repóra Windowson másodpercek. Amit a Windows kilistázni is sok idő alatt tud csak, arra kevesebb idő alatt végigfut egy teljes ag search linuxon.
Oké, én virtualizálva használok csak Windowst, úgyhogy lehet, hogy azért van :-)
OP-nek: egyetértek, hogy ez súlyos regressziónak tűnik, nem volna szabad nagyságrendekkel lassabban listáznia a fájlokat, mint az elődje. Nem jó hozzáállás mérnöki szempontból amit sokan mondanak, hogy "ez ilyen, fogadd el", pláne hogy a régebbi verziók jobban teljesítenek. Ennek oka kell hogy legyen, és ez regresszió. Sajnos segíteni nem tudok a megoldásban. Talán túrnám még a netet, hátha van más is, aki belefutott ugyanebbe, és rájött az okra is.
Milyen program egyébként ez? Kereskedelmi, el kellene tudnod adni Android-14-re is? Vagy szűk körű felhasználó van és meg tudod tenni, hogy egyszerűen nem használod a 14-est? A tapasztalatom az, hogy elvben a helyes dolog a probléma feltárása és javítása lenne, de nem mindig érdemes széllel szembe menni a saját gazdasági és lelki-jóléti érdekedben. Magyarul egy ponton bele kell törődni, hogy szar és workaroundolni a problémát.
- A hozzászóláshoz be kell jelentkezni
Számíthat, hogy milyen filerendszer? Eltérő OS eltérően kezelheti.
Számíthat a hálózat? Eltérő OS eltérő hálózati sebességet tudhat, szóba jöhet az MTU, illetve a protokoll verzióinak a sajátosságai.
Számíthat, hogy mi a tartalom? Lehet, hogy van valami párhuzamosan futó szolgáltatás, ami a beleolvas a fileokba, hogy ha képek akkor miniatűrökkel szórakoztathasson, vagy valami ilyesmi, és ezért lassabb.
Ha megoldható, és nem nagy munka, akkor érdemes lehet egy ekkora bejegyzés halmazt több alkönyvtárra bontani, például a file nevének első betűje szerint (ami nem túl hasznos ha DCIM* a fileok neve) de akkor meg lehet dátum szerint, vagy akármi, lévén fogalmunk sincs, milyen állományokról van szó.
- A hozzászóláshoz be kell jelentkezni
Androidos telefon és telefon közt hardverben sok különbség lehet ám.
- SoC tudása
- háttértár sebessége
- ha microsd kártyán vannak a fájlok, annak a sebessége
- ha microsd kártyán vannak a fájlok, lásd első pont
- ha usb-n éred el a fájlokat, az usb port sebessége
- a fentieken lévő fájlrendszer
- ha hálózaton át éred el a fájlokat, a wifi sebessége
- és ezeken kívül még a gyártó "optimalizálásai" az adott android rendszeren.
És akkor arról még nem beszéltünk, hogy nem mindegy, mivel nyitsz meg egy könyvtárat androidon, mert az egyik fájlkezelő minden megnyitásnál újraindexel, thumbnail-eket generál, exif adatokat olvas, különböző adatok szerint rendez. Még régebben futottam pl bele abba, hogy az "optimalizálás" érdekében a gyártó által az androidba integrált tisztító alkalmazás a háttérben futva automatikusan törölte a thumbnaileket a galéria bezárása után, hozzám csak azzal jöttek, miért ilyen lassú az a tetves képnézegető.
A Linux nem ingyenes. Meg kell fizetni a tanulópénzt. / Az emberek 66 százaléka nem tud számolni! Gondoljatok bele, ez majdnem a fele!! / Mindenki jó valamire. Ha másra nem, hát elrettentő példának. / "Az udvariasság olyan, mint a nulla a számtanban. Egymagában mit sem jelent, de sokat változtat azon, amihez hozzátesszük." - Freya Stark 1893 - 1993
- A hozzászóláshoz be kell jelentkezni
Nem fájlkezelő, hanem C rogram.
Saját háttértár. Olvasási sebessége 500 MByte/sec.
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
Buta kérdés, de itt nézelődtél?
A Linux nem ingyenes. Meg kell fizetni a tanulópénzt. / Az emberek 66 százaléka nem tud számolni! Gondoljatok bele, ez majdnem a fele!! / Mindenki jó valamire. Ha másra nem, hát elrettentő példának. / "Az udvariasság olyan, mint a nulla a számtanban. Egymagában mit sem jelent, de sokat változtat azon, amihez hozzátesszük." - Freya Stark 1893 - 1993
- A hozzászóláshoz be kell jelentkezni
Egy kicsit konkrétabban! Mit kéne megnéznem?
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
Például azt, hogy az android 14-ben megjelenő újdonságok közt vannak pl ilyesmik is:
In Android 14 and higher, the platform reduces the maximum memory that can be locked using mlock()
to 64 KB per process.
A Linux nem ingyenes. Meg kell fizetni a tanulópénzt. / Az emberek 66 százaléka nem tud számolni! Gondoljatok bele, ez majdnem a fele!! / Mindenki jó valamire. Ha másra nem, hát elrettentő példának. / "Az udvariasság olyan, mint a nulla a számtanban. Egymagában mit sem jelent, de sokat változtat azon, amihez hozzátesszük." - Freya Stark 1893 - 1993
- A hozzászóláshoz be kell jelentkezni
Tipp: az android 14 fs-ében a könyvtárbejegyzések esetleg láncolt listában vannak, ezért a keresés, módosítás O(n) idejű. (És egy teljes könyvtár kiürítése, átmozgatása, törlése O(n^2).) A Linux ext2 is küzdött ezzel, 20K könyvtárbeli bejegyzés fölött a file-törlés, listázás stb. kifejezetten lassú volt. Modernebb file-rendszerek valamilyen indexelést használnak a bejegyzések név szerinti felleléséhez, létrehozásához. Pl. ext3 és ext4 esetén van olyan filesystem feature, hogy "dir_index": "Use hashed b-trees to speed up name lookups in large directories. This feature is supported by ext3 and ext4 file systems, and is ignored by ext2 file systems" (man ext4).
Android 8-ról ekkora regresszió android 14-re mondjuk meglepő lenne...
- A hozzászóláshoz be kell jelentkezni
Ha Te írod a szoftvert és megállapítottad tesztekkel, hogy van olyan aktuális rendszer, ami a rendszer korlátai miatt lassan futtatja, akkor miért nem változtatsz a szoftveren/fájl struktúrán?
Értem, hogy Te adtál itt egy feladatot a népnek (mérje le mindenki ezt azon, amije van), és ha nem azt csinálják a hozzászólók amit kértél, akkor egyáltalán minek szóltak hozzá... De ez azért nem jó így (szerintem), mert Te már lemérted, hogy az Android 14 lassú, ergo nem lesz több információd azzal, ha ugyan ezt más is leméri.
Attól a szoftvered nem lesz gyorsabb, hogy még tíz ember leméri ugyanezt, hümmögünk rajta közösen, hogy hú, az Android 14 milyen szar az Android 8-hoz képest ezen a téren...
Te magad találtál egy olyan hibát, ami akuális eszközön gondot okoz a szoftverednek. Mivel az eszközöket nem tudod kijavítani, ezért javaslom a szoftver módosítását úgy, hogy ez a probléma ne okozzon gondot a használata során.
Példának a Kopia mentő szoftvert tudom felhozni, ami blokkokra bontva tárolja a mentéseket, minden blokknak van egy hash értéke, és a túl sok fájl per mappa elkerülésére a hash első 4 jegye egy mappa, másokdik 4 jegye azon belül egy almappa a többi jegye pedig ezen az almappán belül egy fájlnév. Nyilván azért alakították így ki, mert aránylag sok OS-en tapasztalták, hogy gondot okoz a túl sok fájl egy mappában. Ráadásul ez a szoftver engedi konfigurálni a bontás mélységét és az egyes szintekhez használt számjegyek számát, hogy a futtató rendszerhez legoptimálisabb elosztást meg lehessen keresni (akinek ilyenre van ideje és kedve).
- A hozzászóláshoz be kell jelentkezni
Köszönöm, hogy elolvastad, amit eddig írtam!
"Attól a szoftvered nem lesz gyorsabb, hogy még tíz ember leméri ugyanezt, hümmögünk rajta közösen, hogy hú, az Android 14 milyen szar az Android 8-hoz képest ezen a téren..."
Itt nem a szoftverem a téma. Az a téma, hogy a google ismét rontott a Linuxon?
Azt szeretném tudni, hogy másik Android-14 telefonon is fennáll-e probléma, hogy tudjam nem a gyártó bökött el valamit. (Az enyém Motorola g34 5g)
Szeretném tudni azt is, hogy más (pl. 9, ... 13, 15) Androidokon is jelentkezik-e a probléma.
Azt, hogy sok-sok fájl lehet egy mappában már 20 éve használom Linuxon. Amikor elkezdtem csináltam egy tesztet 200000 fájlal. Eddig egyszer volt gond vele, de annak egy speciális hiba volt az oka. (https://hup.hu/node/185358) Használom 15 éve Windowson és 4 éve Androidon is. Mivel a FAT fájlrendszereknél ez problémát jelentett, a program tudja azt, hogy több(sok) alkönyvtárba átpakolja a fájlokat. Ehhez nem kell rajta változtatni. Az persze problémát okoz, ha a több eszközön is meglévő adatállomány nem mindenhol egyforma szerkezetű, Nem lehet őket szinkronban tartani.
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
Ha küldesz egy teszt progit (mármint egy olyan bármit, ami ennek a tesztelésére készült), vagy leírsz egy teszt módszert, akkor én lemérem a kért adatot, S24 Ultra és S20FE áll rendelkezésre (szerintem utóbbi Android 13).
Viszont random módon, amit én találok ki, nincs értelme méregetni, mert más módszerrel, más alkalmazással akár a Te készülékeden is lehet tök más eredmény, nem még egy másik modellen. Én sajna nem tudok Android-ra C-ben teszt progit írni, ha meg valami fájlkezelővel csinálom, akkor ott nem fogjuk tudni, hogy az adott program gyorstáraz-e bármi eredmény, vagy épp hogyan, milyen hívásokkal operálva működik.
- A hozzászóláshoz be kell jelentkezni
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
A Windows alatt sem mindegy hogy Bitlocker-rel vagy anélkül kezel fájlokat az ember. (Itt kifejezetten a nagyszámú fájlokat tartalmazó könyvtárak másolására gondolok) - Nem lehet.., hogy a 14-es Android már alapból titkosított fájlrendszert használ? (Mondjuk a 9-eshez képest?)
- A hozzászóláshoz be kell jelentkezni
Úgy rémlik, a 10(?) óta fájl bázisú titkosítás van, előtte lemez alapú volt, szóval ja, akár ez is lehet.
- A hozzászóláshoz be kell jelentkezni
amelyik program ennyi fájlt egy mappában tárol, azt a programot törölni kell, mert annak a programnak a fejlesztője egyéb turpisságokra is képes
4 és fél éve csak vim-et használok. elsősorban azért, mert még nem jöttem rá, hogy kell kilépni belőle.
- A hozzászóláshoz be kell jelentkezni
Zseniális észrevétel! Logikusan megalapozva. Nagy tudásra vall.
Nagy Gábor https://sign-el-soft.hu
- A hozzászóláshoz be kell jelentkezni
Szóval azt írod, hogy C proggival nézed (opendir+readdir+closedir), ami azért fontos, mert itt nincs plusz SYS_stat rendszerhívás, valamint ami még feltűnt, hogy azt írod, előfordul, hogy elsőre gyorsabb, mint másodjára.
Nézzük, mi történik ilyenkor a C programodban:
1. readdir libc-ben van implementálva, ez hívja a SYS_readdir syscall-t a kernelben
2. a kernel megnézi, szerepel-e a VFS dcache-ben, és ha igen, egyből visszaadja
3. ha nem szerepel, akkor végignyálazza a mount listet és továbbpasszolja a fájlrendszer meghajtónak (tényleg, milyen fájlrendszerről van szó?)
4. a fájlrendszermeghajtó megfelelő blokkokra bontja a kérést, és átpasszolja a blokkrétegnek
5. a blokkréteg megnézi, szerepel-e a blokk a struct buffer_head-ben, és ha igen, egyből visszaadja
6. ha nem, akkor továbbpasszolja a dev major/minor által kijelölt eszközmeghajtónak (gondolom SD kártya, tehát eMMC meghajtó vagy ilyesmi ebben az esetben, tehát /dev/mmcblkX)
7. itt blokkolódik a programod, amíg az eszközmeghajtó nem végez (ez adja a tényleges olvasási sebesség overheadjét)
8. amint beolvasódott a blokk, bekerül a buffer_head-be, majd onnan az fs rétegbe, onnan a VFS rétegbe a dcache-be, majd onnan a libc-be, és onnan a readdir visszatérési értékébe
Röviden, a nyers diszksebesség (7. pont) csak egyetlen egy, nem túl valószínű esetben számít (a legeslegelső híváskor). Mivel szekvenciális readdir hívásokról van szó, ezért a fájlrendszer hasítófák és hasonló baromságok (4. pont) semmit sem számítanak (az csak a namei() hívásnál gyorsít, itt nem). Szóval marad az, hogy valószínűleg nincs elég memória a dcache-nek (2. pont), ezért kell a második futásnál újra végigjárnia a teljes Canossa járást. Namost attól függően, hogy a bcache-ben benne van-e még (5. pont), megintcsak nagy lehet a szórás, mert ha benne van, akkor nem is kell a meghajtóhoz nyúlni és nem is blokkolódik a programod (kivéve, ha cache nélkül mountoltad, de ez nem valószínű, persze lehetséges.)
Ja, és mégegy fontos dolog: nagyon nem mindegy, hogy atime sync van-e vagy sem, mert ha van esetleg, akkor minden egyes dcache lekérés után végigmegy egy írási folyamat is (legalább a fájlrendszermeghajtó szintig, ami aztán dobhatja, ha az adott fs nem támogatja), míg ha ki van kacsolva az atime, akkor semmi sem történik.
Szóval én errefelé nézelődnék:
- ha flusholod a dcache-t (lásd itt), az számottevően befolyásolja-e a sebességet (ha nem, akkor szinte biztos, hogy nincs elég memória a kernel VFS-hez)
- milyen fájlrendszer van alatta, az kezel-e atime-ot
- milyen opciókkal lett felmountolva (van-e atime sync vagy esetleg write-thorugh és nincs egyáltalán cache (buffer_head) használva, ilyenek)
Remélem segít. Én mindenképp arrafelé nézelődnék, hogy második hívásnál miért nincs benne a struct dirent a VFS dcache-ben, szerintem itt lesz a kutya elásva. Simán lehet például, hogy a 14-esen fut valami másik proggi is, ami nyálazza a diszket (valami indexer pl.), és ami így folyton triggereli a LRU flush-t a dcache-ben, ezért a dirent-jeid folyton kikerülnek a memóriából. 8-ason viszont nem fut ilyen, így szépen ottmaradnak a memóriában.
- A hozzászóláshoz be kell jelentkezni