34 pointsby iljanevoan hour ago12 comments
  • conradludgate30 minutes ago
    While I agree that CPU limits tend to make your performance worse, I don't think the delivery of the post is all too convincing (and is pretty heavy on the LLM-isms that it's putting me off from reading).

    It mentions that a cpu request is a guarantee, but how is that enforced? If I have 32 pods running on a 32 core machine, each with 1cpu requested, what stops one of those pods using an unfair share? I assume we just rely on the Linux scheduler. If I have 16 pods with 1cpu and 1 pod with 16cpu, does the Linux scheduler make sure to give the 16cpu pod more time? Or are we back to using cgroups.

  • sjbzbeiks14 minutes ago
    This always sounds good on paper and this is very common lore, but then when you get into production escalations a very common problem is a lot of software depends on limits for autoconfiguration of thread pools and even several runtimes (go and java for example, at least .net is mentioned in the article), yes you can usually set them with a flag but people have to know this, communicate it, enforce it. Basically replace adhoc what limits is doing for you automatically configuration wise

    So this just all assumes you have a setup where all teams communicate the necessary information perfectly.. what happens in practice is workloads degrade at edge cases because there are 256 threads running for a thread pool instead of 4.

    • barrkel6 minutes ago
      Go is particularly hilarious because it will just go and create a thread for every hardware thread in your system (my home system has 192 hardware threads), just in case it needs to scale up. So tiny utilities, little network proxies and the like add up to thousands of threads + stacks etc. for very little load.
  • teliskr6 minutes ago
    I would expect the impact of cpu limits to be different between K8s providers. I have only used memory limits. If I had a pod that tended to be very cpu intensive, I would schedule it on it's own node group.
  • dwedge8 minutes ago
    Just give me the prompt
  • aairey33 minutes ago
    How is this “news”?

    It was already the case in 2018.

    Also, no mention of the scheduler overhead. And the maintenance overhead is the worst.

    • websap30 minutes ago
      Scheduler overhead for CPU limits? Are you talking about the Linux Scheduler or the k8s scheduler?
    • ofjcihen16 minutes ago
      Many orgs are just now discovering K8s at scale. Seriously.

      I’m not sure why that is but a large number of the F100s I contract with are suddenly deploying 4 times the number of containers they had before.

  • inigyou11 minutes ago
    AI wrote most of this
  • tbrownaw18 minutes ago
    Limits are what give consistency when your pod gets scheduled on nodes with different amounts of load.
  • rimworld34 minutes ago
    tbh I've never known search a 'feature' as limits and requests coupled with health probes to cause more problems in production than anything else.....
  • an hour ago
    undefined
  • websap36 minutes ago
    For the love of god - care about other pods on the node, especially in a multi-tenant setup.

    Sorry for the cheeky response.

    CPU Limits have a place, you don't want a bad change for 1 deployment object affect all neighbors by taking all the CPU. You need to be able to constrain the blast radius. This doc gives me strong AI vibes. Setting CPU limits isn't free. You still need to care about how the programming language that you use discovers those limits, and correctly handles them. For e.g. if you spin up a 100 Java threads, but only have 1 cpu as the limit, that's bad design.

    • 27 minutes ago
      undefined
    • inigyou27 minutes ago
      That's what CPU requests are for.
      • websap18 minutes ago
        CPU requests are cgroup weights.
    • crymer1125 minutes ago
      I don’t think you understand how CPU limits and the Linux CPU scheduler work. CPU limits don’t protect you from something taking all the CPU; that’s what CPU requests do. Limits throttle your pods even if the CPU is idle/free to do work.
  • callamdelaney38 minutes ago
    Hilarious, another kubernetes footgun - the gift that keeps on giving.
  • johanj15 minutes ago
    [dead]