This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
nl:caching [2022/10/11 23:25] yves |
nl:caching [2022/10/13 10:34] (current) yves |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Caching ===== | ===== Caching ===== | ||
+ | |||
Voor optimale prestaties ondersteunt PMA.core zowel tegelcaches als cloudcaches. | Voor optimale prestaties ondersteunt PMA.core zowel tegelcaches als cloudcaches. | ||
+ | |||
We hebben een strategie waarbij de cache automatisch wordt geleegd na de retentieperiode en er geen nieuwe cache wordt gecreëerd indien er niet voldoende schijfruimte is. | We hebben een strategie waarbij de cache automatisch wordt geleegd na de retentieperiode en er geen nieuwe cache wordt gecreëerd indien er niet voldoende schijfruimte is. | ||
+ | |||
Er is een aparte configuratiepagina voor cache-instellingen | Er is een aparte configuratiepagina voor cache-instellingen | ||
- | Tile caching | + | ==== Tile caching ==== |
- | Geëxtraheerde tegels uit WSI’s worden opgeslagen in een cache-opslagplaats. Dit is Just In Time (JIT) caching: de tegels | + | |
+ | Geëxtraheerde tegels uit [[https://realdata.pathomation.com/what-whole-slide-images-wsis-are-made-of/|WSI’s]] worden opgeslagen in een cache-opslagplaats. Dit is Just In Time (JIT) caching: de tegels | ||
worden alleen in de cache bewaard nadat ze voor het eerst zijn gegenereerd. | worden alleen in de cache bewaard nadat ze voor het eerst zijn gegenereerd. | ||
+ | |||
Wanneer veel mensen naar dezelfde beeld kijken, zijn ze doorgaans in dezelfde interessegebieden en beeld-details geïnteresseerd. | Wanneer veel mensen naar dezelfde beeld kijken, zijn ze doorgaans in dezelfde interessegebieden en beeld-details geïnteresseerd. | ||
Dit houdt in dat, wanneer het systeem langer wordt gebruikt, vrijwel alle geopende | Dit houdt in dat, wanneer het systeem langer wordt gebruikt, vrijwel alle geopende | ||
content beschikbaar komt via de tegelcache. Tile caching maakt het hiermee mogelijk om van PMA.core een | content beschikbaar komt via de tegelcache. Tile caching maakt het hiermee mogelijk om van PMA.core een | ||
systeem te maken dat zeer goed opgeschaald kan worden dan wanneer dit mechanisme afwezig was. | systeem te maken dat zeer goed opgeschaald kan worden dan wanneer dit mechanisme afwezig was. | ||
+ | |||
PMA.core maakt geen cache aan van tegels of thumbnails indien er niet voldoende schijfruimte beschikbaar is (zoals gedefinieerd in de | PMA.core maakt geen cache aan van tegels of thumbnails indien er niet voldoende schijfruimte beschikbaar is (zoals gedefinieerd in de | ||
instellingen). | instellingen). | ||
- | Cloud caching | + | |
+ | ==== Cloud caching ==== | ||
Beelden die worden verkregen via cloudopslag zoals S3 of Azure, hebben het voordeel van een extra | Beelden die worden verkregen via cloudopslag zoals S3 of Azure, hebben het voordeel van een extra | ||
cache-laag. | cache-laag. | ||
+ | |||
+ | {{ :cache_structure.png?nolink&400 |}} | ||
+ | |||
Op basis van de verzoeken van cliënten, vraagt PMA.core een deel van de originele beeld op uit de cloudopslag, | Op basis van de verzoeken van cliënten, vraagt PMA.core een deel van de originele beeld op uit de cloudopslag, | ||
welke in een lokale cache-opslag wordt bewaard. Uit dat data-deel worden vervolgens de tegels verkregen. | welke in een lokale cache-opslag wordt bewaard. Uit dat data-deel worden vervolgens de tegels verkregen. | ||
- | Probleemoplossing | + | ==== Probleemoplossing ==== |
Het is mogelijk om een afbeelding vanuit de cloudopslag te laden indien er geen schijfruimte is. | Het is mogelijk om een afbeelding vanuit de cloudopslag te laden indien er geen schijfruimte is. | ||
+ | |||
Stel dat de gehele schrijfruimte 100GB bedraagt en er momenteel 95GB wordt gebruikt. PMA.core is ingesteld | Stel dat de gehele schrijfruimte 100GB bedraagt en er momenteel 95GB wordt gebruikt. PMA.core is ingesteld | ||
om geen cache te gebruiken indien er niet tenminste 1GB beschikbare ruimte is. Laten we verder aannemen dat | om geen cache te gebruiken indien er niet tenminste 1GB beschikbare ruimte is. Laten we verder aannemen dat | ||
de retentieperiode is ingesteld op 30 dagen en dat alle cache in de laatste 10 dagen is gecreëerd. | de retentieperiode is ingesteld op 30 dagen en dat alle cache in de laatste 10 dagen is gecreëerd. | ||
+ | |||
Als er nu 10 of 100 verzoeken zijn om verschillende afbeeldingen te laden, moet PMA.core de delen van deze afbeeldingen | Als er nu 10 of 100 verzoeken zijn om verschillende afbeeldingen te laden, moet PMA.core de delen van deze afbeeldingen | ||
cachen, waardoor er ineens geen ruimte is en er niets verwijderd kan worden. | cachen, waardoor er ineens geen ruimte is en er niets verwijderd kan worden. | ||
+ | |||
U kunt dit nog verder doordrijven en ervan uitgaan dat u 100GB aan vrije ruimte heeft op een 100GB schijf en | U kunt dit nog verder doordrijven en ervan uitgaan dat u 100GB aan vrije ruimte heeft op een 100GB schijf en | ||
u honderden verzoeken voor “Afbeeldingsinfo” ontvangt. Hierdoor bewaart PMA.core weer delen van honderden | u honderden verzoeken voor “Afbeeldingsinfo” ontvangt. Hierdoor bewaart PMA.core weer delen van honderden | ||
afbeeldingen tegelijkertijd op de schijf op, waardoor de schijf mogelijk vol raakt (zonder dat er ook maar één regel is verbroken). | afbeeldingen tegelijkertijd op de schijf op, waardoor de schijf mogelijk vol raakt (zonder dat er ook maar één regel is verbroken). | ||
+ | |||
Hierna werkt er niets meer, omdat PMA.core niet weet wat het moet verwijderen; alle cache is nieuw. | Hierna werkt er niets meer, omdat PMA.core niet weet wat het moet verwijderen; alle cache is nieuw. | ||
U zult nu de cache-map(pen) handmatig moeten legen, waarna het opbouwproces opnieuw kan beginnen | U zult nu de cache-map(pen) handmatig moeten legen, waarna het opbouwproces opnieuw kan beginnen |