Vai al contenuto

Innovare la rilevazione delle perdite di memoria con AIOps: il testo di RESIN

La gestione di un’infrastruttura cloud su scala globale rappresenta un compito vasto e complesso, soprattutto quando si tratta di garantire standard e qualità del servizio. RESIN introduce un servizio rivoluzionario per la rilevazione efficace delle perdite di memoria.

Nel panorama in continuo mutamento del cloud computing, le perdite di memoria rappresentano una sfida persistente. Queste influenzano le prestazioni, la stabilità e, in ultima istanza, l’esperienza dell’utente. Le perdite di memoria avvengono quando la memoria viene allocata ma non rilasciata in maniera tempestiva e non intenzionale. Questo causa un potenziale degrado delle prestazioni del componente, possibili crash del sistema operativo e, peggio ancora, spesso influisce anche su altri processi in esecuzione sulla stessa macchina, causandone il rallentamento o persino il blocco.

Le soluzioni di rilevazione delle perdite di memoria tradizionali si dividono in due categorie: rilevazione statica e dinamica. Le tecniche statiche analizzano il codice sorgente del software e deducono possibili perdite. La modalità dinamica, invece, rileva la perdita tramite strumentazione di un programma e traccia i riferimenti dell’oggetto durante l’esecuzione. Tuttavia, queste tecniche convenzionali non soddisfano pienamente le esigenze del rilevamento delle perdite di memoria in un ambiente cloud.

Introduciamo RESIN, un servizio di rilevazione delle perdite di memoria di tipo end-to-end pensato per affrontare in modo olistico le perdite di memoria nelle grandi infrastrutture cloud. RESIN è stato utilizzato in produzione da Microsoft Azure dimostrando una rilevazione efficace delle perdite di memoria con alta precisione e basso sovraccarico.

Una grande infrastruttura cloud potrebbe consistere in centinaia di componenti software di proprietà di diversi team. Prima dell’introduzione di RESIN, la rilevazione delle perdite di memoria era un compito a carico del singolo team in Microsoft Azure. RESIN utilizza un approccio centralizzato, che effettua la rilevazione delle perdite in diverse fasi per il beneficio di un basso sovraccarico, alta precisione e scalabilità. Questo approccio non richiede l’accesso al codice sorgente dei componenti o estese strumentazioni o ricompilazioni.

RESIN esegue un monitoraggio a basso sovraccarico utilizzando agenti di monitoraggio per raccogliere dati di telemetria della memoria a livello host. Un servizio remoto viene utilizzato per aggregare e analizzare i dati provenienti da diversi host usando uno schema di “bucketization-pivot”. Quando viene rilevata una perdita in un bucket, RESIN avvia un’analisi sulle istanze di processo nel bucket. Per le perdite altamente sospette identificate, RESIN esegue una creazione di immagini dell’heap in tempo reale e lo confronta con immagini dell’heap regolari in un database di riferimento.

Dopo aver generato molteplici immagini dell’heap, RESIN esegue un algoritmo diagnostico per localizzare la causa radice della perdita e genera un report di diagnosi da allegare al ticket di allerta per assistere gli sviluppatori per ulteriori analisi. In ultima analisi, RESIN mitiga automaticamente il processo di perdita.