jemalloc 5.3.1

Dopo quasi quattro anni di interruzione (vedi "jemalloc tutto") è stata rilasciata la versione 5.3.1 dell'allocatore jemalloc – implementazione di malloc(3), che si concentra sulla prevenzione della frammentazione e sul supporto per la parallellità scalabile.

La nuova versione include oltre 390 commit con bug fix, nuove funzionalità, ottimizzazione delle prestazioni e miglioramenti nella portabilità.

Il progetto è scritto in linguaggio C e distribuito con licenza BSD.

Nuove funzionalità:

  • supporto per pvalloc(3).
  • rilevamento della doppia liberazione di memoria nella build di debug;
  • aggiunta l'opzione di compilazione —enable-pageid per attivare l'annotazione della memoria visualizzata.
  • aggiunto il parametro runtime prof_bt_max per gestire la profondità massima dello stack per il profiling;
  • aggiunta l'opzione di compilazione —enable-force-getenv per utilizzare getenv invece di secure_getenv;
  • aggiunta l'opzione di compilazione —disable-dss per disabilitare l'uso di sbrk(2);
  • aggiunta l'opzione di compilazione tcache_ncached_max per gestire il numero di elementi nella cache dei thread.
  • aggiunto il parametro runtime calloc_madvise_threshold per determinare se il kernel o memset viene utilizzato per azzerare i blocchi di memoria allocati durante la chiamata a calloc;
  • aggiunta l'opzione di compilazione —disable-user-config per disabilitare la lettura durante l'esecuzione delle configurazioni dal file /etc/malloc.conf o dalla variabile ambiente MALLOC_CONF;
  • aggiunto il parametro runtime disable_large_size_classes per garantire il funzionamento del nuovo algoritmo di calcolo della dimensione disponibile, che minimizza l'overhead di memoria durante l'allocazione di grandi blocchi di memoria, ovvero di dimensione >= 4 * PAGE;
  • incluso l'uso di process_madvise e aggiunto il parametro runtime process_madvise_max_batch per gestire il numero massimo di aree di memoria in ogni "batch" madvise;
  • aggiunte le interfacce mallctl:
    • opt.prof_bt_max;
    • arena.<i>.name per modificare e ottenere i nomi delle "arene";
    • thread.tcache.max per modificare e ottenere tcache_max del thread attuale;
    • thread.tcache.ncached_max.write e thread.tcache.ncached_max.read_sizeclass per modificare e ottenere ncached_max del thread attuale;
    • arenas.hugepage per restituire la dimensione hugepage utilizzata, esportandola anche nelle statistiche malloc;
    • approximate_stats.active per ottenere un valore approssimativo dell'attuale volume di byte attivi, che non dovrebbe essere confrontato con altre statistiche ottenute.
  • sono stati inoltre corretti molti bug e migliorata la documentazione.

Fonte: linux.org.ru

Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS | ProHoster