jemalloc 5.3.1

Dopo quasi quattro anni di pausa (vedi "jemalloc tutto") è stata rilasciata la versione 5.3.1 dell'allocatore jemalloc – implementazione di malloc(3), con particolare attenzione alla prevenzione della frammentazione e al supporto della parallelità scalabile.

Il nuovo rilascio include oltre 390 commit con correzioni di bug, nuove funzionalità, ottimizzazione delle prestazioni e miglioramenti della portabilità.

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

Nuove funzionalità:

  • supporto di pvalloc(3).
  • rilevamento della doppia liberazione della memoria nella build di debug;
  • aggiunta l'opzione di compilazione —enable-pageid per abilitare l'annotazione della memoria visualizzata.
  • aggiunto il parametro runtime prof_bt_max per controllare la profondità massima dello stack per il profilo;
  • 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 viene utilizzato il kernel o memset per azzerare i blocchi di memoria allocati durante la chiamata a calloc;
  • aggiunta l'opzione di compilazione —disable-user-config per disabilitare la lettura delle configurazioni durante l'esecuzione dal file /etc/malloc.conf o dalla variabile d'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 nell'allocazione di grandi blocchi di memoria, cioè di dimensione >= 4 * PAGE;
  • incluso l'uso di process_madvise e aggiunto il parametro runtime process_madvise_max_batch per controllare il numero massimo di regioni di memoria in ogni "batch" di madvise;
  • aggiunti gli interfacciali mallctl:
    • opt.prof_bt_max;
    • arena..name per modificare e ottenere i nomi delle "arene";
    • thread.tcache.max per modificare e ottenere tcache_max del thread corrente;
    • thread.tcache.ncached_max.write e thread.tcache.ncached_max.read_sizeclass per modificare e ottenere ncached_max del thread corrente;
    • arenas.hugepage per restituire la dimensione hugepage utilizzata, esportandola anche nelle statistiche di malloc;
    • approximate_stats.active per ottenere un valore approssimativo dell'attuale volume di byte attivi, che non deve essere confrontato con altre statistiche ottenute.
  • sono stati inoltre corretti molti bug e migliorata la documentazione.

Fonte: linux.org.ru

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