{"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\/fr\/blog\/google-opublikoval-novyj-variant-sistemy-raspredeleniya-pamyati-tcmalloc","title":{"rendered":"Google a publi\u00e9 une nouvelle version du syst\u00e8me de gestion de la m\u00e9moire TCMalloc.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>La soci\u00e9t\u00e9 Google <noindex><a rel=\"nofollow\" href=\"https:\/\/abseil.io\/blog\/20200212-tcmalloc\">pr\u00e9sent\u00e9e<\/a><\/noindex> nouvelle variante du syst\u00e8me de r\u00e9partition de la m\u00e9moire <noindex><a rel=\"nofollow\" href=\"https:\/\/google.github.io\/tcmalloc\/\">TCMalloc<\/a><\/noindex>, qui est utilis\u00e9e dans de nombreux projets internes de Google. Le code TCMalloc est \u00e9crit en C++ et <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/google\/tcmalloc\">est distribu\u00e9<\/a><\/noindex> sous licence Apache. Pour fonctionner, il n\u00e9cessite un compilateur prenant en charge C++17 pour le langage C++ et C11 pour le langage C (gcc 9.2+ ou clang 9.0+). Des syst\u00e8mes d'exploitation <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/google\/tcmalloc\/blob\/master\/docs\/platforms.md\">est pris en charge<\/a><\/noindex> uniquement Linux (x86, PPC).<\/p>\n<p>Il est notable que depuis 2005, il existe une autre variante de tcmalloc qui <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/gperftools\/gperftools\/blob\/master\/src\/tcmalloc.cc\">fourni<\/a><\/noindex> fait partie du paquet <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/gperftools\/gperftools\/\">gperftools<\/a><\/noindex> (Google Performance Tools). Ce sont deux <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/gperftools\/gperftools\/issues\/1169#issuecomment-585321782\">r\u00e9seaux diff\u00e9rents, l'ordinateur n\u00e9cessite deux cartes r\u00e9seau. La premi\u00e8re est l'adaptateur int\u00e9gr\u00e9 (pour fonctionner dans le KE), et la seconde (pour fonctionner dans Modbus-TCP) est ins\u00e9r\u00e9e dans un port PCI-E et j'ai tir\u00e9 un patch cord vers le routeur (juste pour ne pas \u00e9parpiller les fils des armoires avec PLC jusqu'\u00e0 l'ordinateur sur le bureau. Du c\u00f4t\u00e9 PLC, bien s\u00fbr, nous pla\u00e7ons \u00e9galement un routeur.).<\/a><\/noindex> projets ayant des racines communes. Le nouveau TCMalloc est plut\u00f4t une tentative d'ouvrir le code des travaux internes r\u00e9cents de Google, mais il n'est pas encore con\u00e7u pour fournir un ABI stable et prendre en charge un large \u00e9ventail de syst\u00e8mes d'exploitation. Le maintien de l'ancien tcmalloc dans gperftools se poursuivra, mais de nouvelles fonctionnalit\u00e9s, telles que l'assignation de cache aux CPU, ne seront pas transf\u00e9r\u00e9es.<\/p>\n<p>TCMalloc propose une impl\u00e9mentation de la fonction C malloc() et de l'op\u00e9rateur C++ \u00ab new \u00bb, optimis\u00e9es pour atteindre de hautes performances et adapt\u00e9es aux applications multithreads. TCMalloc offre \u00e9galement des fonctionnalit\u00e9s d'introspection et de profilage, permettant \u00e0 l'application d'obtenir des informations d\u00e9taill\u00e9es sur l'utilisation de la m\u00e9moire dans le tas. Le code utilise des optimisations bas\u00e9es sur les fonctionnalit\u00e9s modernes du langage C++, telles que<br \/>\nl'op\u00e9rateur delete avec <noindex><a rel=\"nofollow\" href=\"https:\/\/isocpp.org\/files\/papers\/n3778.html\">sp\u00e9cification de la taille<\/a><\/noindex> \u00e0 partir de C++14 et allocation de m\u00e9moire avec <noindex><a rel=\"nofollow\" href=\"http:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2016\/p0035r1.html\">alignement<\/a><\/noindex> \u00e0 partir de C++17.<\/p>\n<p>TCMalloc <noindex><a rel=\"nofollow\" href=\"https:\/\/google.github.io\/tcmalloc\/design\">d'une ou plusieurs<\/a><\/noindex> compos\u00e9 de trois composants : un frontend avec cache pour une allocation rapide et une lib\u00e9ration de m\u00e9moire, une couche pour remplir le cache du frontend et un backend qui effectue des op\u00e9rations telles que l'obtention de m\u00e9moire aupr\u00e8s du syst\u00e8me d'exploitation, la gestion de grands morceaux de m\u00e9moire inutilis\u00e9e et le retour de m\u00e9moire exc\u00e9dentaire au syst\u00e8me d'exploitation. Le cache est exempt de blocages et fonctionne en liaison avec les c\u0153urs CPU, mais revient \u00e0 un mod\u00e8le de mise en cache par fil en cas d'absence de fonctionnalit\u00e9 requise dans le noyau du syst\u00e8me d'exploitation (l'assignation de cache aux CPU ne fonctionne qu'avec les derniers noyaux de Linux). Le backend prend en charge le travail avec des pages m\u00e9moire ordinaires ainsi que des pages de grande taille (hugepage).<\/p>\n<p><center><noindex><a rel=\"nofollow\" href=\"https:\/\/google.github.io\/tcmalloc\/images\/tcmalloc_internals.png\"><img decoding=\"async\" alt=\"Google a publi\u00e9 une nouvelle version du syst\u00e8me de gestion de la m\u00e9moire TCMalloc.\" src=\"\/wp-content\/uploads\/2020\/02\/a1938ff7433f5801e20371f31f7678be.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/center><\/p>\n<p>Les principales caract\u00e9ristiques de TCMalloc :<\/p>\n<ul>\n<li class=\"l\"> Allocation et d\u00e9sallocation rapide de la m\u00e9moire gr\u00e2ce \u00e0 la mise en cache. La plupart des op\u00e9rations d'allocation de m\u00e9moire ne n\u00e9cessitent pas de verrouillage, ce qui offre une bonne \u00e9volutivit\u00e9 pour les applications multithreading \u00e0 haute parall\u00e9lisation des t\u00e2ches.\n<li class=\"l\"> Utilisation flexible de la m\u00e9moire, permettant de r\u00e9utiliser les zones de m\u00e9moire lib\u00e9r\u00e9es pour des objets de taille variable ou de retourner la m\u00e9moire au syst\u00e8me d'exploitation.\n<li class=\"l\"> Faibles frais g\u00e9n\u00e9raux par objet gr\u00e2ce \u00e0 l'allocation de pages d'objectifs de taille uniforme et \u00e0 la repr\u00e9sentation efficace des petits objets. Des pages logiques support\u00e9es de 4KiB, 8KiB, 32KiB et 256KiB. Par exemple, en demandant des blocs de 512 octets de m\u00e9moire, une page enti\u00e8re de 4KiB sera allou\u00e9e pour les objets de 512 octets, pouvant contenir 8 de ces objets.\n<li class=\"l\"> Ajustement possible via les d\u00e9finitions de la taille du cache et des param\u00e8tres d'intensit\u00e9 de retour de m\u00e9moire au syst\u00e8me d'exploitation.\n<li class=\"l\"> Fourniture d'informations d\u00e9taill\u00e9es pour analyser l'utilisation de la m\u00e9moire par l'application.\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Source : <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.2 - 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\/fr\/blog\/google-opublikoval-novyj-variant-sistemy-raspredeleniya-pamyati-tcmalloc\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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 a publi\u00e9 une nouvelle version de TCMalloc, son syst\u00e8me de r\u00e9partition de la m\u00e9moire | ProHoster","description":"Google a pr\u00e9sent\u00e9 une nouvelle version de son syst\u00e8me de r\u00e9partition de m\u00e9moire.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/google-opublikoval-novyj-variant-sistemy-raspredeleniya-pamyati-tcmalloc","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/41840","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=41840"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/41840\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/41841"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=41840"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=41840"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=41840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}