@
Jerie, @
Jack Flushell
geen idee hoe ik moet quoten of verwijzen naar een andere entry in dit topic, copy paste dus maar...
<quote>
@jpgview doet net alsof Regex zoveel extra power vraagt (of bedoelt hij dat niet?)
</quote>
hieronder (maar entries verschuiven wel eens binnen een topic - geen idee waarom) heb ik een quote van de lead developer gedaan, die een en ander verklaard. Ik, en vele anderen draaien pi-hole op een raspberry pi, zoals het door Jacob Salmela (de eerste pi-hole developer) oorspronkelijk bedoeld was. Zelf heb ik een pi 3B, maar er zijn ook nog mensen die pihole op een pi ZERO draaien. Een van de problemen met beta5, die ondertussen bijna allemaal zijn opgelost (nearing completion) was performance. Dagen aan een stuk hebben we testen gedaan, om tot het huidige resultaat te komen (ik en anderen als tester, de developers om oplossingen te bedenken).
Hier (sorry voor mijn gebrek aan 'tweakers website gebruik' kennis, nogmaals de quote van de lead developer:
<quote>
Others than that, I tend to disagree on your idea of less gravity and more regex is better. My reasoning is: It hurts performance.
I’ll only shortly explain why, you can ask if something remains unclear.
Gravity domains are now stored in a fully constructed B-tree. The lookup time in this tree model is O(log_2(N)). Without going too much into the technical details, let me just give some numbers:
1000 gravity domains = 10 tree lookups
10,000 domains = 14 tree lookups
100,000 domains = 17 tree lookups
1,000,000 domains = 20 tree lookups
10,000,000 domains = 24 tree lookups
100,000,000 domains = 27 tree lookups
The tree has efficient pointers to its branches so one lookup is also roughly one I/O activity. Given this, the performance impact on having a gravity list which is 1000x larger is almost negligible given the amount of overhead that is necessarily anyway present in the tree lookup process.
Now let’s go back to regex: Yes, regex is also quite performant in FTL. However, even a single regex is likely more expensive than having 100 times the number of domains in gravity. And since we’re not holding any gravity domain (but only the root of the tree) in memory, there is also not really a difference in memory usage here (in fact, Pi-hole v5.0 should use less memory for everyone!).
So with a few regex, it comes down to: It doesn’t really matter - or - doing with more gravity domains is still faster given the v5.0 reality and the tree.
However, on the contrary, I expect the gravity process to be massively delayed if each and every of your million+ domains needs to get passed through all these regex, I expect this to be really slow. I wouldn’t like to see our speed improvements we’ve just arrived at being killed by something I expect to have no notable effect at all during runtime.
</quote>
Die comment was het gevolg van de vraag of het interresant zou zijn gravity op te kuisen, e.g, entries verwijderen die al door een regex worden gematched. Geen goed idee dus, integendeel, een paar honderd domains extra blocken, blijkt efficienter dan een regex. Het probleem uiteraard, en daar ben ik me ook van bewust, is een lijst vinden waar alle domains die je wil blocken in voorkomen. Zo hadden we vandaag (weer een herhaling) een discussie over het
blocken van facebook, onmogelijk (bijna) met blocklists, Zuckerberg domains kweken sneller dan konijnen, en zolang er geen werkbare oplossing komt voor '
recently created domains', grijpen we naar de regex. De facebook regex, na lange discussie overeen gekomen, vind je
hier.
[Reactie gewijzigd door jpgview op 24 juli 2024 20:22]