Kubernetes CPU multithreading










0















I have a 4 cores CPU, I create a Kubernetes Pod with CPU resource limit 100m, which mean it will occupy 1/10 of a core power.



I wondering in this case, 100m is not even a full core, if my app is a multithread app, will my app's threads run in parallel? Or all the threads will run in the part of core (100 milli core) only?



Can anyone further explain the mechanism behind?










share|improve this question






















  • your app uses application user space threads or OS/kernel threads?

    – Ijaz Ahmad Khan
    Nov 13 '18 at 9:49











  • @IjazAhmadKhan my app is java app, which use java thread features to create new thread.

    – GMsoF
    Nov 16 '18 at 3:44















0















I have a 4 cores CPU, I create a Kubernetes Pod with CPU resource limit 100m, which mean it will occupy 1/10 of a core power.



I wondering in this case, 100m is not even a full core, if my app is a multithread app, will my app's threads run in parallel? Or all the threads will run in the part of core (100 milli core) only?



Can anyone further explain the mechanism behind?










share|improve this question






















  • your app uses application user space threads or OS/kernel threads?

    – Ijaz Ahmad Khan
    Nov 13 '18 at 9:49











  • @IjazAhmadKhan my app is java app, which use java thread features to create new thread.

    – GMsoF
    Nov 16 '18 at 3:44













0












0








0








I have a 4 cores CPU, I create a Kubernetes Pod with CPU resource limit 100m, which mean it will occupy 1/10 of a core power.



I wondering in this case, 100m is not even a full core, if my app is a multithread app, will my app's threads run in parallel? Or all the threads will run in the part of core (100 milli core) only?



Can anyone further explain the mechanism behind?










share|improve this question














I have a 4 cores CPU, I create a Kubernetes Pod with CPU resource limit 100m, which mean it will occupy 1/10 of a core power.



I wondering in this case, 100m is not even a full core, if my app is a multithread app, will my app's threads run in parallel? Or all the threads will run in the part of core (100 milli core) only?



Can anyone further explain the mechanism behind?







kubernetes cpu






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 13 '18 at 8:05









GMsoFGMsoF

3,26995393




3,26995393












  • your app uses application user space threads or OS/kernel threads?

    – Ijaz Ahmad Khan
    Nov 13 '18 at 9:49











  • @IjazAhmadKhan my app is java app, which use java thread features to create new thread.

    – GMsoF
    Nov 16 '18 at 3:44

















  • your app uses application user space threads or OS/kernel threads?

    – Ijaz Ahmad Khan
    Nov 13 '18 at 9:49











  • @IjazAhmadKhan my app is java app, which use java thread features to create new thread.

    – GMsoF
    Nov 16 '18 at 3:44
















your app uses application user space threads or OS/kernel threads?

– Ijaz Ahmad Khan
Nov 13 '18 at 9:49





your app uses application user space threads or OS/kernel threads?

– Ijaz Ahmad Khan
Nov 13 '18 at 9:49













@IjazAhmadKhan my app is java app, which use java thread features to create new thread.

– GMsoF
Nov 16 '18 at 3:44





@IjazAhmadKhan my app is java app, which use java thread features to create new thread.

– GMsoF
Nov 16 '18 at 3:44












2 Answers
2






active

oldest

votes


















0














Take a look to this documentation related to resources in Kubernetes:



You can use resources as described in the article:




To specify a CPU request for a Container, include the
resources:requests field in the Container resource manifest. To
specify a CPU limit, include resources:limits.



In this exercise, you create a Pod that has one Container. The
Container has a request of 0.5 CPU and a limit of 1 CPU. Here is the
configuration file for the Pod:




apiVersion: v1
kind: Pod
metadata:
name: cpu-demo
namespace: cpu-example
spec:
containers:
- name: cpu-demo-ctr
image: vish/stress
resources:
limits:
cpu: "1"
requests:
cpu: "0.5"
args:
- -cpus
- "2"


Additional to your question:
Yes it is not gonna run in parallels (multi core threads). But you can show few core for your application in pod and then use multi threads to execute it.




The args section of the configuration file provides arguments for
the Container when it starts. The -cpus "2" argument tells the
Container to attempt to use 2 CPUs.







share|improve this answer






























    0














    The closest answer I found so far is this one:




    For a single-threaded program, a cpu usage of 0.1 means that if you
    could freeze the machine at a random moment in time, and look at what
    each core is doing, there is a 1 in 10 chance that your single thread
    is running at that instant. The number of cores on the machine does
    not affect the meaning of 0.1. For a container with multiple threads,
    the container's usage is the sum of its thread's usage (per previous
    definition.) There is no guarantee about which core you run on, and
    you might run on a different core at different points in your
    container's lifetime
    . A cpu limit of 0.1 means that your usage is not
    allowed to exceed 0.1 for a significant period of time. A cpu request
    of 0.1 means that the system will try to ensure that you are able to
    have a cpu usage of at least 0.1, if your thread is not blocking
    often.




    I think above sound quite logical. Based on my question, 100m core of CPUs power will spread across all the CPU cores, which mean multithreading should work in Kubernetes.






    share|improve this answer






















      Your Answer






      StackExchange.ifUsing("editor", function ()
      StackExchange.using("externalEditor", function ()
      StackExchange.using("snippets", function ()
      StackExchange.snippets.init();
      );
      );
      , "code-snippets");

      StackExchange.ready(function()
      var channelOptions =
      tags: "".split(" "),
      id: "1"
      ;
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function()
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled)
      StackExchange.using("snippets", function()
      createEditor();
      );

      else
      createEditor();

      );

      function createEditor()
      StackExchange.prepareEditor(
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader:
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      ,
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      );



      );













      draft saved

      draft discarded


















      StackExchange.ready(
      function ()
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53276398%2fkubernetes-cpu-multithreading%23new-answer', 'question_page');

      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      0














      Take a look to this documentation related to resources in Kubernetes:



      You can use resources as described in the article:




      To specify a CPU request for a Container, include the
      resources:requests field in the Container resource manifest. To
      specify a CPU limit, include resources:limits.



      In this exercise, you create a Pod that has one Container. The
      Container has a request of 0.5 CPU and a limit of 1 CPU. Here is the
      configuration file for the Pod:




      apiVersion: v1
      kind: Pod
      metadata:
      name: cpu-demo
      namespace: cpu-example
      spec:
      containers:
      - name: cpu-demo-ctr
      image: vish/stress
      resources:
      limits:
      cpu: "1"
      requests:
      cpu: "0.5"
      args:
      - -cpus
      - "2"


      Additional to your question:
      Yes it is not gonna run in parallels (multi core threads). But you can show few core for your application in pod and then use multi threads to execute it.




      The args section of the configuration file provides arguments for
      the Container when it starts. The -cpus "2" argument tells the
      Container to attempt to use 2 CPUs.







      share|improve this answer



























        0














        Take a look to this documentation related to resources in Kubernetes:



        You can use resources as described in the article:




        To specify a CPU request for a Container, include the
        resources:requests field in the Container resource manifest. To
        specify a CPU limit, include resources:limits.



        In this exercise, you create a Pod that has one Container. The
        Container has a request of 0.5 CPU and a limit of 1 CPU. Here is the
        configuration file for the Pod:




        apiVersion: v1
        kind: Pod
        metadata:
        name: cpu-demo
        namespace: cpu-example
        spec:
        containers:
        - name: cpu-demo-ctr
        image: vish/stress
        resources:
        limits:
        cpu: "1"
        requests:
        cpu: "0.5"
        args:
        - -cpus
        - "2"


        Additional to your question:
        Yes it is not gonna run in parallels (multi core threads). But you can show few core for your application in pod and then use multi threads to execute it.




        The args section of the configuration file provides arguments for
        the Container when it starts. The -cpus "2" argument tells the
        Container to attempt to use 2 CPUs.







        share|improve this answer

























          0












          0








          0







          Take a look to this documentation related to resources in Kubernetes:



          You can use resources as described in the article:




          To specify a CPU request for a Container, include the
          resources:requests field in the Container resource manifest. To
          specify a CPU limit, include resources:limits.



          In this exercise, you create a Pod that has one Container. The
          Container has a request of 0.5 CPU and a limit of 1 CPU. Here is the
          configuration file for the Pod:




          apiVersion: v1
          kind: Pod
          metadata:
          name: cpu-demo
          namespace: cpu-example
          spec:
          containers:
          - name: cpu-demo-ctr
          image: vish/stress
          resources:
          limits:
          cpu: "1"
          requests:
          cpu: "0.5"
          args:
          - -cpus
          - "2"


          Additional to your question:
          Yes it is not gonna run in parallels (multi core threads). But you can show few core for your application in pod and then use multi threads to execute it.




          The args section of the configuration file provides arguments for
          the Container when it starts. The -cpus "2" argument tells the
          Container to attempt to use 2 CPUs.







          share|improve this answer













          Take a look to this documentation related to resources in Kubernetes:



          You can use resources as described in the article:




          To specify a CPU request for a Container, include the
          resources:requests field in the Container resource manifest. To
          specify a CPU limit, include resources:limits.



          In this exercise, you create a Pod that has one Container. The
          Container has a request of 0.5 CPU and a limit of 1 CPU. Here is the
          configuration file for the Pod:




          apiVersion: v1
          kind: Pod
          metadata:
          name: cpu-demo
          namespace: cpu-example
          spec:
          containers:
          - name: cpu-demo-ctr
          image: vish/stress
          resources:
          limits:
          cpu: "1"
          requests:
          cpu: "0.5"
          args:
          - -cpus
          - "2"


          Additional to your question:
          Yes it is not gonna run in parallels (multi core threads). But you can show few core for your application in pod and then use multi threads to execute it.




          The args section of the configuration file provides arguments for
          the Container when it starts. The -cpus "2" argument tells the
          Container to attempt to use 2 CPUs.








          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 13 '18 at 11:23









          Nick RakNick Rak

          1,000312




          1,000312























              0














              The closest answer I found so far is this one:




              For a single-threaded program, a cpu usage of 0.1 means that if you
              could freeze the machine at a random moment in time, and look at what
              each core is doing, there is a 1 in 10 chance that your single thread
              is running at that instant. The number of cores on the machine does
              not affect the meaning of 0.1. For a container with multiple threads,
              the container's usage is the sum of its thread's usage (per previous
              definition.) There is no guarantee about which core you run on, and
              you might run on a different core at different points in your
              container's lifetime
              . A cpu limit of 0.1 means that your usage is not
              allowed to exceed 0.1 for a significant period of time. A cpu request
              of 0.1 means that the system will try to ensure that you are able to
              have a cpu usage of at least 0.1, if your thread is not blocking
              often.




              I think above sound quite logical. Based on my question, 100m core of CPUs power will spread across all the CPU cores, which mean multithreading should work in Kubernetes.






              share|improve this answer



























                0














                The closest answer I found so far is this one:




                For a single-threaded program, a cpu usage of 0.1 means that if you
                could freeze the machine at a random moment in time, and look at what
                each core is doing, there is a 1 in 10 chance that your single thread
                is running at that instant. The number of cores on the machine does
                not affect the meaning of 0.1. For a container with multiple threads,
                the container's usage is the sum of its thread's usage (per previous
                definition.) There is no guarantee about which core you run on, and
                you might run on a different core at different points in your
                container's lifetime
                . A cpu limit of 0.1 means that your usage is not
                allowed to exceed 0.1 for a significant period of time. A cpu request
                of 0.1 means that the system will try to ensure that you are able to
                have a cpu usage of at least 0.1, if your thread is not blocking
                often.




                I think above sound quite logical. Based on my question, 100m core of CPUs power will spread across all the CPU cores, which mean multithreading should work in Kubernetes.






                share|improve this answer

























                  0












                  0








                  0







                  The closest answer I found so far is this one:




                  For a single-threaded program, a cpu usage of 0.1 means that if you
                  could freeze the machine at a random moment in time, and look at what
                  each core is doing, there is a 1 in 10 chance that your single thread
                  is running at that instant. The number of cores on the machine does
                  not affect the meaning of 0.1. For a container with multiple threads,
                  the container's usage is the sum of its thread's usage (per previous
                  definition.) There is no guarantee about which core you run on, and
                  you might run on a different core at different points in your
                  container's lifetime
                  . A cpu limit of 0.1 means that your usage is not
                  allowed to exceed 0.1 for a significant period of time. A cpu request
                  of 0.1 means that the system will try to ensure that you are able to
                  have a cpu usage of at least 0.1, if your thread is not blocking
                  often.




                  I think above sound quite logical. Based on my question, 100m core of CPUs power will spread across all the CPU cores, which mean multithreading should work in Kubernetes.






                  share|improve this answer













                  The closest answer I found so far is this one:




                  For a single-threaded program, a cpu usage of 0.1 means that if you
                  could freeze the machine at a random moment in time, and look at what
                  each core is doing, there is a 1 in 10 chance that your single thread
                  is running at that instant. The number of cores on the machine does
                  not affect the meaning of 0.1. For a container with multiple threads,
                  the container's usage is the sum of its thread's usage (per previous
                  definition.) There is no guarantee about which core you run on, and
                  you might run on a different core at different points in your
                  container's lifetime
                  . A cpu limit of 0.1 means that your usage is not
                  allowed to exceed 0.1 for a significant period of time. A cpu request
                  of 0.1 means that the system will try to ensure that you are able to
                  have a cpu usage of at least 0.1, if your thread is not blocking
                  often.




                  I think above sound quite logical. Based on my question, 100m core of CPUs power will spread across all the CPU cores, which mean multithreading should work in Kubernetes.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 22 '18 at 3:34









                  GMsoFGMsoF

                  3,26995393




                  3,26995393



























                      draft saved

                      draft discarded
















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid


                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.

                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function ()
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53276398%2fkubernetes-cpu-multithreading%23new-answer', 'question_page');

                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      這個網誌中的熱門文章

                      How to read a connectionString WITH PROVIDER in .NET Core?

                      In R, how to develop a multiplot heatmap.2 figure showing key labels successfully

                      Museum of Modern and Contemporary Art of Trento and Rovereto