{"id":1342,"date":"2024-07-23T12:36:26","date_gmt":"2024-07-23T12:36:26","guid":{"rendered":"https:\/\/dockerpros.com\/?post_type=glossary&#038;p=1342"},"modified":"2024-07-23T12:36:26","modified_gmt":"2024-07-23T12:36:26","slug":"dockerfile-cpuset-cpus","status":"publish","type":"glossary","link":"https:\/\/dockerpros.com\/it\/wiki\/dockerfile-cpuset-cpus\/","title":{"rendered":"Dockerfile --set di CPU"},"content":{"rendered":"<h1>Comprendere l'opzione \u2013cpuset-cpus del Dockerfile: approfondimenti avanzati\n\nL'opzione \u2013cpuset-cpus del Dockerfile \u00e8 uno strumento potente che consente agli sviluppatori di specificare quali CPU dovrebbero essere utilizzate per eseguire un contenitore Docker. Questa funzionalit\u00e0 \u00e8 particolarmente utile in ambienti multi-core, dove \u00e8 possibile ottimizzare l'utilizzo delle risorse e migliorare le prestazioni delle applicazioni.\n\nQuando si utilizza l'opzione \u2013cpuset-cpus, \u00e8 possibile assegnare un contenitore a una o pi\u00f9 CPU specifiche. Ad esempio, se si dispone di un sistema a 4 core e si desidera eseguire un contenitore su solo due di essi, \u00e8 possibile utilizzare il seguente comando:\n\n```\ndocker run --cpuset-cpus=\"0,1\" \n```\n\nIn questo caso, il contenitore verr\u00e0 eseguito solo sulle CPU 0 e 1, lasciando le CPU 2 e 3 disponibili per altri processi o contenitori.\n\n\u00c8 importante notare che l'opzione \u2013cpuset-cpus non limita il numero di core che un contenitore pu\u00f2 utilizzare, ma piuttosto specifica quali core sono disponibili per l'esecuzione. Se un contenitore richiede pi\u00f9 risorse di quelle disponibili sui core assegnati, potrebbe verificarsi un degrado delle prestazioni.\n\nInoltre, l'opzione \u2013cpuset-cpus pu\u00f2 essere combinata con altre opzioni di Docker per ottenere un controllo ancora pi\u00f9 granulare sulle risorse del contenitore. Ad esempio, \u00e8 possibile utilizzare l'opzione \u2013cpus per limitare la quantit\u00e0 di CPU che un contenitore pu\u00f2 utilizzare, indipendentemente dai core assegnati con \u2013cpuset-cpus.\n\nIn sintesi, l'opzione \u2013cpuset-cpus del Dockerfile \u00e8 uno strumento prezioso per ottimizzare l'utilizzo delle risorse in ambienti multi-core. Consente agli sviluppatori di assegnare contenitori a CPU specifiche, migliorando le prestazioni e la gestione delle risorse. Tuttavia, \u00e8 importante utilizzare questa opzione con attenzione, considerando le esigenze specifiche dell'applicazione e le risorse disponibili nel sistema.<\/h1>\n<p>When deploying applications in containers, performance and resource allocation are critical aspects that can significantly influence the efficiency and responsiveness of your applications. One powerful feature in Docker that aids in resource management is the <code>--cpuset-cpus<\/code> opzione. Questo flag consente agli sviluppatori di specificare quali core della CPU a <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> pu\u00f2 essere eseguito, migliorando il controllo sulla distribuzione delle risorse, ottimizzando le prestazioni e gestendo la contesa in ambienti multi-tenant. In questo articolo, esploreremo in profondit\u00e0 il <code>--cpuset-cpus<\/code> opzione, le sue applicazioni pratiche, le implicazioni sulle prestazioni e le strategie per un uso efficace.<\/p>\n<h2>Che cos'\u00e8 <code>--cpuset-cpus<\/code>?<\/h2>\n<p><code>--cpuset-cpus<\/code> \u00c8 un flag di runtime di Docker che pu\u00f2 essere incluso nel <code>docker <span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\" target=\"_blank\">correre<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" si riferisce a un comando in diversi linguaggi di programmazione e sistemi operativi per eseguire un programma o script specificato. Avvia processi, fornendo un ambiente controllato per l'esecuzione dei compiti.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span><\/code> command or specified in a <span class=\"glossaryai-tooltip glossary-term-689\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/docker-compose-file\/\" target=\"_blank\">Docker Compose file<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">A Docker Compose file is a YAML configuration file that defines services, networks, and volumes for multi-container Docker applications. It streamlines deployment and management, enhancing efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/docker-compose-file\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>. It restricts the execution of <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> processes to a specific set of CPU cores, leveraging the underlying Linux kernel&#8217;s CPU affinity feature. By design, this allows Docker users to allocate CPU resources more granularly, catering to specific workloads and improving performance by minimizing CPU contention among containers.<\/p>\n<h2>La necessit\u00e0 di affinit\u00e0 CPU nella containerizzazione<\/h2>\n<p>In traditional environments, applications <span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\" target=\"_blank\">correre<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" si riferisce a un comando in diversi linguaggi di programmazione e sistemi operativi per eseguire un programma o script specificato. Avvia processi, fornendo un ambiente controllato per l'esecuzione dei compiti.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> on a single operating system instance, vying for CPU resources as required. The advent of containerization brought about a paradigm shift, enabling multiple isolated applications to <span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\" target=\"_blank\">correre<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" si riferisce a un comando in diversi linguaggi di programmazione e sistemi operativi per eseguire un programma o script specificato. Avvia processi, fornendo un ambiente controllato per l'esecuzione dei compiti.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> on the same kernel. However, this multi-tenancy has its drawbacks, particularly regarding resource contention. Containers may compete for CPU cycles, leading to unpredictable performance.<\/p>\n<p>Per affrontare queste preoccupazioni, Docker fornisce meccanismi come le quote CPU, i limiti e le prenotazioni. Tra questi, <code>--cpuset-cpus<\/code> gives a fine-grained approach to control which CPUs can be utilized by a specific <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>. This is particularly useful in scenarios where performance predictability is paramount, such as high-frequency trading applications, real-time data processing, or applications heavily reliant on CPU-bound operations.<\/p>\n<h2>The Syntax of <code>--cpuset-cpus<\/code><\/h2>\n<p>La sintassi per utilizzare il <code>--cpuset-cpus<\/code> option is straightforward. It can be included in your Docker commands as follows:<\/p>\n<pre><code class=\"language-bash\">docker run --cpuset-cpus=\"0,1\" my-container<\/code><\/pre>\n<p>In questo esempio, il <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> <code>il mio contenitore<\/code> is restricted to <span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\" target=\"_blank\">correre<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" si riferisce a un comando in diversi linguaggi di programmazione e sistemi operativi per eseguire un programma o script specificato. Avvia processi, fornendo un ambiente controllato per l'esecuzione dei compiti.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> only on CPU cores 0 and 1. You can specify a range of CPUs using a hyphen, such as:<\/p>\n<pre><code class=\"language-bash\">docker run --cpuset-cpus=\"0-2\" my-container<\/code><\/pre>\n<p>This would allow the <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> to execute on CPU cores 0, 1, and 2. Furthermore, you can combine ranges and individual CPUs:<\/p>\n<pre><code class=\"language-bash\">docker run --cpuset-cpus=\"0,2-4\" il-mio-container<\/code><\/pre>\n<p>In this instance, the <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> can <span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\" target=\"_blank\">correre<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" si riferisce a un comando in diversi linguaggi di programmazione e sistemi operativi per eseguire un programma o script specificato. Avvia processi, fornendo un ambiente controllato per l'esecuzione dei compiti.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> on CPU cores 0, 2, 3, 4.<\/p>\n<h2>Quando usare <code>--cpuset-cpus<\/code><\/h2>\n<h3>Ottimizzazione delle prestazioni<\/h3>\n<p>In environments where performance is critical, such as gaming servers, video encoding, or complex computations, restricting <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> execution to specific CPUs can lead to significant improvements. By dedicating certain cores to specific containers, you can reduce the overhead of CPU context switching and cache misses, which are often detrimental to performance.<\/p>\n<h3>Resource Isolation<\/h3>\n<p>When running multiple containers on a single host, it&#8217;s essential to ensure that one <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> does not starve others of resources. By using <code>--cpuset-cpus<\/code>, you can isolate CPU resources for different containers, ensuring that they do not interfere with each other&#8217;s performance. This is especially important in multi-tenant applications where different teams may <span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\" target=\"_blank\">correre<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" si riferisce a un comando in diversi linguaggi di programmazione e sistemi operativi per eseguire un programma o script specificato. Avvia processi, fornendo un ambiente controllato per l'esecuzione dei compiti.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> their services on shared infrastructure.<\/p>\n<h3>Prestazioni Prevedibili<\/h3>\n<p>For applications that require predictable performance, assigning specific CPUs ensures that the <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> will always execute on the same cores, reducing variability in performance metrics. This is particularly valuable in environments where <span class=\"glossaryai-tooltip glossary-term-681\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/service\/\" target=\"_blank\">Servizio<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Il servizio si riferisce all'atto di fornire assistenza o supporto per soddisfare esigenze o requisiti specifici. In vari ambiti, comprende il servizio clienti, il supporto tecnico e i servizi professionali, enfatizzando l'efficienza e la soddisfazione dell'utente.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/service\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> Gli accordi sul livello di servizio (SLA) richiedono tempi di risposta o velocit\u00e0 di elaborazione costanti.<\/p>\n<h3>Calcolo ad Alte Prestazioni (CAP)<\/h3>\n<p>In HPC scenarios, workloads are often tightly coupled with specific hardware capabilities. By using <code>--cpuset-cpus<\/code>, you can pin applications to specific CPU cores that may have higher clock speeds or are less loaded with other tasks, thereby maximizing computational efficiency.<\/p>\n<h2>Come <code>--cpuset-cpus<\/code> Interagisce con altre funzionalit\u00e0 di gestione delle risorse di Docker.<\/h2>\n<p>Docker provides several resource management options that can be used in conjunction with <code>--cpuset-cpus<\/code>. Understanding how these features interact can help you create more effective <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> configurazioni.<\/p>\n<h3>Quote CPU<\/h3>\n<p>CPU shares (<code>--cpu-shares<\/code>) allow you to set a relative weight for CPU allocation. If multiple containers are running and competing for CPU, Docker will allocate CPU time based on the shares assigned. While <code>--cpuset-cpus<\/code> restricts which CPUs a <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> can <span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\" target=\"_blank\">correre<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" si riferisce a un comando in diversi linguaggi di programmazione e sistemi operativi per eseguire un programma o script specificato. Avvia processi, fornendo un ambiente controllato per l'esecuzione dei compiti.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> on, CPU shares dictate how much time it gets on those CPUs.<\/p>\n<p>Per esempio:<\/p>\n<pre><code class=\"language-bash\">docker run --cpuset-cpus=\"0,1\" --cpu-shares=512 my-container<\/code><\/pre>\n<p>In questo comando, <code>il mio contenitore<\/code> can only <span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\" target=\"_blank\">correre<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" si riferisce a un comando in diversi linguaggi di programmazione e sistemi operativi per eseguire un programma o script specificato. Avvia processi, fornendo un ambiente controllato per l'esecuzione dei compiti.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> on CPU cores 0 and 1, but it has a relative share of 512 in comparison to other containers that may have different shares.<\/p>\n<h3>CPU Quotas and Limits<\/h3>\n<p>Docker ti permette anche di impostare quote e limiti. Puoi usare <code>--cpu-quota<\/code> and <code>--cpus<\/code> to set hard limits on the CPU time allocated to a <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>. For instance:<\/p>\n<pre><code class=\"language-bash\">docker run --cpuset-cpus=\"0,1\" --cpus=\"1.5\" my-container<\/code><\/pre>\n<p>In questo caso, <code>il mio contenitore<\/code> can <span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\" target=\"_blank\">correre<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" si riferisce a un comando in diversi linguaggi di programmazione e sistemi operativi per eseguire un programma o script specificato. Avvia processi, fornendo un ambiente controllato per l'esecuzione dei compiti.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> on CPUs 0 and 1, but it is limited to 1.5 CPUs worth of processing power. This means that the <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> can utilize 150% of a single CPU&#8217;s capacity on average.<\/p>\n<h3>Memory Constraints<\/h3>\n<p>It\u2019s worth noting that CPU management does not exist in a vacuum; memory allocation also plays a significant role in <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> performance. Specifying limits on memory can prevent containers from consuming all available memory, which can lead to excessive swapping and poor performance.<\/p>\n<h2>Practical Example: Optimizing a Web Application<\/h2>\n<p>Per illustrare come <code>--cpuset-cpus<\/code> can enhance performance, let\u2019s consider an example where we deploy a web application using Docker. Assume that we have two services: a web server (Nginx) and a database (PostgreSQL).<\/p>\n<h3>Impostazione dello scenario<\/h3>\n<p>In a typical deployment, we may want the web server to handle incoming requests quickly while ensuring the database remains responsive. We would like to allocate:<\/p>\n<ul>\n<li>4 core CPU per Nginx<\/li>\n<li>2 CPU cores for PostgreSQL<\/li>\n<\/ul>\n<h3>Configurazione Docker Compose<\/h3>\n<pre><code class=\"language-yaml\">version: '3.8'\nservices:\n  web:\n    image: nginx\n    cpuset: \"0-3\"        # Nginx pu\u00f2 utilizzare le CPU 0, 1, 2, 3\n    deploy:\n      resources:\n        limits:\n          cpus: '4'      # Limite a 4 core CPU\n\n  db:\n    image: postgres\n    cpuset: \"4,5\"        # PostgreSQL pu\u00f2 utilizzare le CPU 4, 5\n    deploy:\n      resources:\n        limits:\n          cpus: '2'      # Limite a 2 core CPU<\/code><\/pre>\n<h3>Analisi delle prestazioni<\/h3>\n<p>In questa configurazione, Nginx pu\u00f2 elaborare le richieste in arrivo su quattro core CPU dedicati, mentre PostgreSQL \u00e8 confinato ai propri due core. Questa disposizione aiuta a ridurre la contesa delle risorse, portando a tempi di risposta migliorati per le richieste web e query del database pi\u00f9 veloci. <\/p>\n<p>Now, if under heavy load, both services start using their allocated resources, you can monitor performance using tools like <code>docker stats<\/code> per osservare l'utilizzo della CPU e valutare se l'allocazione delle risorse soddisfa le aspettative di prestazioni.<\/p>\n<h2>Considerations and Best Practices<\/h2>\n<p>Durante l'uso <code>--cpuset-cpus<\/code> offre vantaggi significativi, ci sono diverse considerazioni e best practice da tenere a mente:<\/p>\n<ol>\n<li>\n<p><strong>Valutare le caratteristiche del carico di lavoro<\/strong>Prima di assegnare i core CPU, analizzare le caratteristiche del carico di lavoro e verificare se una specifica affinit\u00e0 CPU possa effettivamente produrre risultati vantaggiosi.<\/p>\n<\/li>\n<li>\n<p><strong>Monitor Performance<\/strong>Monitora continuamente le prestazioni dei tuoi container. Utilizza strumenti come Prometheus e Grafana per visualizzare l'utilizzo della CPU e identificare potenziali colli di bottiglia.<\/p>\n<\/li>\n<li>\n<p><strong>Avoid Over-Partitioning<\/strong>: Overly restricting CPU resources can lead to underutilization. Ensure that you leave some buffer to account for spikes in resource requirements.<\/p>\n<\/li>\n<li>\n<p><strong>Test e Itera<\/strong>: Implement changes in a staging environment before rolling them into production. Performance tuning is often an iterative process, and adjustments may be needed over time.<\/p>\n<\/li>\n<li>\n<p><strong>Use with Other Resource Management Features<\/strong>: Combine <code>--cpuset-cpus<\/code> with CPU shares, quotas, and memory limits for a more holistic resource management strategy.<\/p>\n<\/li>\n<li>\n<p><strong>Consider Kernel Settings<\/strong>: Advanced users may want to explore kernel parameters like <code>cgroups<\/code> to further refine resource allocation for Docker containers.<\/p>\n<\/li>\n<\/ol>\n<h2>Conclusione<\/h2>\n<p>The <code>--cpuset-cpus<\/code> L'opzione in Docker \u00e8 uno strumento potente per ottimizzare l'allocazione delle risorse e garantire prestazioni prevedibili delle applicazioni containerizzate. Fornendo la possibilit\u00e0 di limitare l'utilizzo della CPU a core specifici, gli sviluppatori possono migliorare la reattivit\u00e0, isolare i carichi di lavoro e ottimizzare le loro applicazioni per massimizzare l'efficienza.<\/p>\n<p>As <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> <span class=\"glossaryai-tooltip glossary-term-657\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/orchestration\/\" target=\"_blank\">orchestrazione<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Orchestration refers to the automated management and coordination of complex systems and services. It optimizes processes by integrating various components, ensuring efficient operation and resource utilization.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/orchestration\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> continues to evolve, understanding and leveraging resource management features like <code>--cpuset-cpus<\/code> will be essential for creating robust, high-performance applications in cloud-native environments. By following best practices and continuously monitoring performance, you can make informed decisions that enhance your <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> deployments and ultimately improve user experience.<\/p>","protected":false},"excerpt":{"rendered":"<p>L'opzione `\u2013cpuset-cpus` in Docker consente agli utenti di specificare quali core della CPU utilizzare per un container. <span class=\"glossaryai-tooltip glossary-term-650\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\" target=\"_blank\">container<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Containers are lightweight, portable units that encapsulate software and its dependencies, enabling consistent execution across different environments. They leverage OS-level virtualization for efficiency.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/it\/wiki\/container\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> can utilize. This feature enhances performance and resource management by limiting CPU resources to designated cores, improving efficiency in multi-core systems.<\/p>","protected":false},"author":1,"featured_media":1997,"parent":0,"template":"","glossary-cat":[],"class_list":["post-1342","glossary","type-glossary","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Dockerfile -cpuset-cpus - Dockerpros<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dockerpros.com\/it\/wiki\/dockerfile-cpuset-cpus\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dockerfile -cpuset-cpus - Dockerpros\" \/>\n<meta property=\"og:description\" content=\"The `--cpuset-cpus` option in Docker allows users to specify which CPU cores a container can utilize. This feature enhances performance and resource management by limiting CPU resources to designated cores, improving efficiency in multi-core systems.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dockerpros.com\/it\/wiki\/dockerfile-cpuset-cpus\/\" \/>\n<meta property=\"og:site_name\" content=\"Dockerpros\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/dockerfile-cpuset-cpus_1342.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-cpu-set-cpus\/\",\"url\":\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-cpu-set-cpus\/\",\"name\":\"Dockerfile -cpuset-cpus - Dockerpros\",\"isPartOf\":{\"@id\":\"https:\/\/dockerpros.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-cpu-set-cpus\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-cpu-set-cpus\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/dockerfile-cpuset-cpus_1342.jpg\",\"datePublished\":\"2024-07-23T12:36:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-cpu-set-cpus\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-cpu-set-cpus\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-cpu-set-cpus\/#primaryimage\",\"url\":\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/dockerfile-cpuset-cpus_1342.jpg\",\"contentUrl\":\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/dockerfile-cpuset-cpus_1342.jpg\",\"width\":800,\"height\":600,\"caption\":\"dockerfile-cpuset-cpus-2\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-cpu-set-cpus\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/dockerpros.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Glossary\",\"item\":\"https:\/\/dockerpros.com\/fr\/wiki\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Dockerfile &#8211;cpuset-cpus\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dockerpros.com\/#website\",\"url\":\"https:\/\/dockerpros.com\/\",\"name\":\"Dockerpros\",\"description\":\"DockerPros \u2013 Your Ultimate Docker Resource Hub\",\"publisher\":{\"@id\":\"https:\/\/dockerpros.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dockerpros.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/dockerpros.com\/#organization\",\"name\":\"Dockerpros\",\"url\":\"https:\/\/dockerpros.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/dockerpros.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/Dockerpros_logo_blanco.png\",\"contentUrl\":\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/Dockerpros_logo_blanco.png\",\"width\":532,\"height\":114,\"caption\":\"Dockerpros\"},\"image\":{\"@id\":\"https:\/\/dockerpros.com\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dockerfile -cpuset-cpus - Dockerpros","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dockerpros.com\/it\/wiki\/dockerfile-cpuset-cpus\/","og_locale":"it_IT","og_type":"article","og_title":"Dockerfile -cpuset-cpus - Dockerpros","og_description":"The `--cpuset-cpus` option in Docker allows users to specify which CPU cores a container can utilize. This feature enhances performance and resource management by limiting CPU resources to designated cores, improving efficiency in multi-core systems.","og_url":"https:\/\/dockerpros.com\/it\/wiki\/dockerfile-cpuset-cpus\/","og_site_name":"Dockerpros","og_image":[{"width":800,"height":600,"url":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/dockerfile-cpuset-cpus_1342.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Tempo di lettura stimato":"6 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-cpu-set-cpus\/","url":"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-cpu-set-cpus\/","name":"Dockerfile -cpuset-cpus - Dockerpros","isPartOf":{"@id":"https:\/\/dockerpros.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-cpu-set-cpus\/#primaryimage"},"image":{"@id":"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-cpu-set-cpus\/#primaryimage"},"thumbnailUrl":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/dockerfile-cpuset-cpus_1342.jpg","datePublished":"2024-07-23T12:36:26+00:00","breadcrumb":{"@id":"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-cpu-set-cpus\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dockerpros.com\/de\/wiki\/dockerfile-cpu-set-cpus\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-cpu-set-cpus\/#primaryimage","url":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/dockerfile-cpuset-cpus_1342.jpg","contentUrl":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/dockerfile-cpuset-cpus_1342.jpg","width":800,"height":600,"caption":"dockerfile-cpuset-cpus-2"},{"@type":"BreadcrumbList","@id":"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-cpu-set-cpus\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dockerpros.com\/"},{"@type":"ListItem","position":2,"name":"Glossary","item":"https:\/\/dockerpros.com\/fr\/wiki\/"},{"@type":"ListItem","position":3,"name":"Dockerfile &#8211;cpuset-cpus"}]},{"@type":"WebSite","@id":"https:\/\/dockerpros.com\/#website","url":"https:\/\/dockerpros.com\/","name":"Esperti Docker","description":"DockerPros \u2013 Il tuo punto di riferimento definitivo per Docker","publisher":{"@id":"https:\/\/dockerpros.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dockerpros.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/dockerpros.com\/#organization","name":"Esperti Docker","url":"https:\/\/dockerpros.com\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/dockerpros.com\/#\/schema\/logo\/image\/","url":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/Dockerpros_logo_blanco.png","contentUrl":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/Dockerpros_logo_blanco.png","width":532,"height":114,"caption":"Dockerpros"},"image":{"@id":"https:\/\/dockerpros.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/dockerpros.com\/it\/wp-json\/wp\/v2\/glossary\/1342","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dockerpros.com\/it\/wp-json\/wp\/v2\/glossary"}],"about":[{"href":"https:\/\/dockerpros.com\/it\/wp-json\/wp\/v2\/types\/glossary"}],"author":[{"embeddable":true,"href":"https:\/\/dockerpros.com\/it\/wp-json\/wp\/v2\/users\/1"}],"version-history":[{"count":0,"href":"https:\/\/dockerpros.com\/it\/wp-json\/wp\/v2\/glossary\/1342\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dockerpros.com\/it\/wp-json\/wp\/v2\/media\/1997"}],"wp:attachment":[{"href":"https:\/\/dockerpros.com\/it\/wp-json\/wp\/v2\/media?parent=1342"}],"wp:term":[{"taxonomy":"glossary-cat","embeddable":true,"href":"https:\/\/dockerpros.com\/it\/wp-json\/wp\/v2\/glossary-cat?post=1342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}