{"id":41840,"date":"2020-02-17T05:33:00","date_gmt":"2020-02-17T02:33:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/google-opublikoval-novyj-variant-sistemy-raspredeleniya-pamyati-tcmalloc"},"modified":"2020-02-17T05:33:00","modified_gmt":"2020-02-17T02:33:00","slug":"google-opublikoval-novyj-variant-sistemy-raspredeleniya-pamyati-tcmalloc","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/google-opublikoval-novyj-variant-sistemy-raspredeleniya-pamyati-tcmalloc","title":{"rendered":"Google ha pubblicato una nuova versione del sistema di allocazione della memoria TCMalloc","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Azienda Google <noindex><a rel=\"nofollow\" href=\"https:\/\/abseil.io\/blog\/20200212-tcmalloc\">ha presentato<\/a><\/noindex> nuova versione del sistema di distribuzione della memoria <noindex><a rel=\"nofollow\" href=\"https:\/\/google.github.io\/tcmalloc\/\">TCMalloc<\/a><\/noindex>, utilizzata in molti progetti interni di Google. Il codice TCMalloc \u00e8 scritto in C++ e <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/google\/tcmalloc\">\u00e8 distribuito<\/a><\/noindex> \u00e8 sotto licenza Apache. Per funzionare \u00e8 necessario disporre di un compilatore che supporti C++17 per il linguaggio C++ e C11 per il linguaggio C (gcc 9.2+ o clang 9.0+). Tra i sistemi operativi <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/google\/tcmalloc\/blob\/master\/docs\/platforms.md\">\u00e8 supportato<\/a><\/noindex> solo Linux (x86, PPC).<\/p>\n<p>\u00c8 interessante notare che dal 2005 esiste un'altra versione di tcmalloc che <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/gperftools\/gperftools\/blob\/master\/src\/tcmalloc.cc\">veniva fornito<\/a><\/noindex> fa parte del pacchetto <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/gperftools\/gperftools\/\">gperftools<\/a><\/noindex> (Google Performance Tools). Questi sono due <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/gperftools\/gperftools\/issues\/1169#issuecomment-585321782\">reti<\/a><\/noindex> progetti che hanno radici comuni. Il nuovo TCMalloc \u00e8 piuttosto un tentativo di aprire il codice delle attuali realizzazioni interne di Google, ma non \u00e8 ancora progettato per fornire un ABI stabile e supportare un'ampia gamma di sistemi operativi. La manutenzione del vecchio tcmalloc di gperftools continuer\u00e0, ma nuove funzionalit\u00e0 come il binding della cache alla CPU non saranno trasferite.<\/p>\n<p>TCMalloc include un'implementazione della funzione C malloc() e dell'operatore C++ \u00abnew\u00bb, ottimizzati per ottenere alte prestazioni e per l'uso in applicazioni multithread. TCMalloc offre anche funzionalit\u00e0 di introspezione e profilazione, consentendo all'applicazione di ottenere informazioni dettagliate sull'uso della memoria nel heap. Nel codice vengono applicate ottimizzazioni basate sulle moderne caratteristiche del linguaggio C++, come<br \/>\nl'operatore delete con <noindex><a rel=\"nofollow\" href=\"https:\/\/isocpp.org\/files\/papers\/n3778.html\">indicazione della dimensione<\/a><\/noindex> da C++14 e l'allocazione della memoria con <noindex><a rel=\"nofollow\" href=\"http:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2016\/p0035r1.html\">allineamento<\/a><\/noindex> da C++17.<\/p>\n<p>TCMalloc <noindex><a rel=\"nofollow\" href=\"https:\/\/google.github.io\/tcmalloc\/design\">\u00e8 composto<\/a><\/noindex> \u00e8 composto da tre componenti: un frontend con cache per un veloce allocazione e rilascio della memoria, uno strato per riempire la cache del frontend e un backend che esegue operazioni come l'ottenimento di memoria dal sistema operativo, la gestione di grandi blocchi di memoria inutilizzata e il ritorno della memoria in eccesso al SO. La cache \u00e8 priva di lock e lavora in associazione con i core della CPU, ma ritorna a un modello di caching basato sui thread in assenza della funzionalit\u00e0 necessaria nel kernel del sistema operativo (il binding della cache alla CPU funziona solo nei kernel Linux recenti). Il backend supporta l'utilizzo sia di pagine di memoria normali che di pagine di dimensioni aumentate (hugepage).<\/p>\n<p><center><noindex><a rel=\"nofollow\" href=\"https:\/\/google.github.io\/tcmalloc\/images\/tcmalloc_internals.png\"><img decoding=\"async\" alt=\"Google ha pubblicato una nuova versione del sistema di allocazione della memoria TCMalloc\" src=\"\/wp-content\/uploads\/2020\/02\/a1938ff7433f5801e20371f31f7678be.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/center><\/p>\n<p>Caratteristiche principali di TCMalloc:<\/p>\n<ul>\n<li class=\"l\"> Assegnazione e rilascio rapido della memoria mediante caching. La maggior parte delle operazioni di allocazione della memoria non richiedono blocco, garantendo una buona scalabilit\u00e0 per applicazioni multithreading con alta parallelizzazione nell'esecuzione dei lavori;\n<li class=\"l\"> Utilizzo flessibile della memoria, che consente di riutilizzare le aree di memoria liberate per oggetti di diverse dimensioni o di restituire la memoria al sistema operativo;\n<li class=\"l\"> Basse spese generali per ciascun oggetto grazie all'assegnazione di pagine di oggetti di dimensione uniforme e a una rappresentazione efficiente di piccoli oggetti. Sono supportate pagine logiche di dimensioni 4KiB, 8KiB, 32KiB e 256KiB. Ad esempio, quando si richiedono blocchi da 512 byte di memoria, verr\u00e0 assegnata un'intera pagina da 4KiB per oggetti da 512 byte, in cui possono essere collocati 8 di tali oggetti;\n<li class=\"l\"> \u00c8 possibile una regolazione fine tramite definizioni delle dimensioni della cache e parametri di intensit\u00e0 di restituzione della memoria al sistema operativo;\n<li class=\"l\"> Fornisce informazioni dettagliate per analizzare l'utilizzo della memoria da parte dell'applicazione.\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Fonte: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=52364\">opennet.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Google \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u043d\u043e\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 TCMalloc, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 Google. \u041a\u043e\u0434 TCMalloc \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u0421++ \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Apache. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 C++17 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430 C++, \u0438 C11 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430 \u0421\u0438 (gcc 9.2+ \u0438\u043b\u0438 clang 9.0+). \u0418\u0437 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e Linux (x86, PPC). [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":41841,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-41840","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Google \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u043d\u043e\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/google-opublikoval-novyj-variant-sistemy-raspredeleniya-pamyati-tcmalloc\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Google \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 TCMalloc | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Google \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u043d\u043e\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/google-opublikoval-novyj-variant-sistemy-raspredeleniya-pamyati-tcmalloc\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-17T02:33:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-17T02:33:00+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Google ha pubblicato una nuova versione del sistema di distribuzione della memoria TCMalloc | ProHoster","description":"Google ha presentato una nuova versione del sistema di distribuzione della memoria","canonical_url":"https:\/\/prohoster.info\/it\/blog\/google-opublikoval-novyj-variant-sistemy-raspredeleniya-pamyati-tcmalloc","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Google \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 TCMalloc | ProHoster","og:description":"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Google \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u043d\u043e\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438","og:url":"https:\/\/prohoster.info\/it\/blog\/google-opublikoval-novyj-variant-sistemy-raspredeleniya-pamyati-tcmalloc","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-17T02:33:00+00:00","article:modified_time":"2020-02-17T02:33:00+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"41840","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:09:25","updated":"2022-09-27 17:39:00","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/41840","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=41840"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/41840\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/41841"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=41840"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=41840"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=41840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}