Load is not distributed evenly between cpus

We’re operating an Elastic Stack on kubernetes on a single host(Centos 7). The host has 2x Intel E5-2640 v4 @ 2.40GHz. The processes are supposedly working with all cores but the load is mainly on the first cpu. Most of the time cpu load is similar to the image below:

No restrictions have been configured on the machine or the stack the thread/cpu configs are on default.

GET _nodes/stats/process?filter_path=**.max_file_descriptors output is "1048576".

GET /_nodes/stats?filter_path=nodes.*.thread_pool.write.threads output is "1"

I also see some values under “rejected” from the output of:

GET _cat/thread_pool?v

What might be the cause of this? Something wrong with second cpu? Something wrong with environment options on the cluster? The odd thing is thread count is shown as “1”. I have a elasticstack machine as well didnt configure any cpu/thread options the machine has 4cores/8threads and when i check for thread count on elasticsearch it is shown as 8.

My guess is that the “cores” that have a low load are hyper threaded core, so every physical core would have a thread that have “high” load and a thread with low load. You can use lscpu to figure out which core is in which socket/CPU . AFAIK the core order might differ from system to system. There are some other application that can give you even better view of the system for example hwloc .

cores between 0-38(even numbers) are assigned to cpu 1
cores between 1-39(odd numbers) are assigned to cpu 2 according to lscpu.
but htop output shows between 1-40, which doesnt begin with 0. Is it safe to assume the same distribution as above?