#73 Cache-freundliches Programmieren, CPU-Caches, Ersetzungsstrategien und Cache-Invalidierung

Engineering Kiosk - Ein Podcast von Wolfgang Gassler, Andy Grunwald - Dienstags

Kategorien:

There are only two hard things in Computer Science: cache invalidation and naming things.Caches sind einfach überall. Jede Aktion auf einem Computer nutzt eine Vielzahl an Caches. Sei es der Browser Cache, DNS-Cache, In-Memory Cache auf dem Server oder dein lokaler CPU Cache L1-L4. Doch was sind Caches eigentlich? Welche Cache-Layer und Cache-Hierarchien gibt es? Wie funktionieren Caches? Wie kann ich Cache-freundlich programmieren? Was passiert, wenn der Cache voll ist und was sind Eviction-Policies? Wie relevant sind heutzutage eigentlich die CPU-Caches L1 bis L4 für die normalen Software-Entwickler*innen? Wie kann ich verifizieren, ob mein Code Cache-freundlich ist? Und warum ist Cache Invalidation eigentlich ein hartes Problem?Bonus: Was Bandlaufwerke mit Caching und niederländisches Hähnchen mit Queues zu tun haben.Das schnelle Feedback zur Episode:👍 (top) 👎 (geht so)Feedback (gerne auch als Voice Message)EngKiosk Community: https://engineeringkiosk.dev/join-discord Email: [email protected]: https://podcasts.social/@engkioskTwitter: https://twitter.com/EngKioskWhatsApp +49 15678 136776Gerne behandeln wir auch euer Audio Feedback in einer der nächsten Episoden, einfach Audiodatei per Email oder WhatsApp Voice Message an +49 15678 136776LinksKIP-932: Queues for Kafka: https://cwiki.apache.org/confluence/display/KAFKA/KIP-932%3A+Queues+for+KafkaEngineering Kiosk Episode #65 Clean Code macht Software langsam: https://engineeringkiosk.dev/podcast/episode/65-clean-code-macht-software-langsam/Phil Karlton's original home page from Netscape: https://www.karlton.org/karlton/Engineering Kiosk Episode #67 Die Netz-Entlastung des Internets: Content Delivery Networks (CDNs): https://engineeringkiosk.dev/podcast/episode/67-die-netz-entlastung-des-internets-content-delivery-networks-cdns/Redis Key eviction: https://redis.io/docs/reference/eviction/Engineering Kiosk Episode #54 Key Value Store Redis: Einsatzmöglichkeiten, Fallstricke, Datenstrukturen, HyperLogLog und (flüchtige) Persistenz: https://engineeringkiosk.dev/podcast/episode/54-key-value-store-redis-einsatzm%C3%B6glichkeiten-fallstricke-datenstrukturen-hyperloglog-und-fl%C3%BCchtige-persistenz/Cache replacement policies auf Wikipedia: https://en.wikipedia.org/wiki/Cache_replacement_policiesWhy Cache Invalidation is Hard: https://levelup.gitconnected.com/why-cache-invalidation-is-hard-and-how-to-solve-it-7921ffe4f6ebSprungmarken(00:00:00) Intro(00:01:02) Es gibt nur zwei harte Probleme in der Informatik(00:06:56) Caching und Cache Invalidierung(00:07:25) Was ist ein Cache?(00:10:36) Jeder nutzt Caches jeden Tag: Cache-Layer(00:12:34) Cache-Hierarchien und wie relevant sind CPU Caches (L1 bis L4) heute noch?(00:16:39) Wie funktioniert eigentlich ein Cache? Cache Hit, Cache Miss, Cache Ratio(00:21:27) Ersetzungsstrategien / Eviction-Policies: FIFO, LIFO, LRU, TTL, MRU, LFU(00:31:57) Wie kann ich Cache-Freundlich programmieren um den L1 bis L4 Cache richtig zu nutzen und Monitoring von L1 bis L4 Caches(00:48:39) Ist die Funktionsweise von L1 bis L4 Caches valide für andere Arten von Caches?(00:51:12) Warum ist Cache Invalidierung ein hartes Problem?HostsWolfgang Gassler (https://mastodon.social/@woolf)Andy Grunwald (https://twitter.com/andygrunwald)Feedback (gerne auch als Voice Message)EngKiosk Community: https://engineeringkiosk.dev/join-discord Email: [email protected]: https://podcasts.social/@engkioskTwitter: https://twitter.com/EngKioskWhatsApp +49 15678 136776