Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1650771 > unrolled thread
| Started by | Marcelo Tosatti <mtosatti@redhat.com> |
|---|---|
| First post | 2017-05-25 21:40 +0200 |
| Last post | 2017-05-30 20:20 +0200 |
| Articles | 4 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [patch 2/2] MM: allow per-cpu vmstat_threshold and vmstat_worker configuration Marcelo Tosatti <mtosatti@redhat.com> - 2017-05-25 21:40 +0200
Re: [patch 2/2] MM: allow per-cpu vmstat_threshold and vmstat_worker configuration Christoph Lameter <cl@linux.com> - 2017-05-26 05:30 +0200
Re: [patch 2/2] MM: allow per-cpu vmstat_threshold and vmstat_worker configuration Marcelo Tosatti <mtosatti@redhat.com> - 2017-05-26 21:20 +0200
Re: [patch 2/2] MM: allow per-cpu vmstat_threshold and vmstat_worker configuration Christoph Lameter <cl@linux.com> - 2017-05-30 20:20 +0200
| From | Marcelo Tosatti <mtosatti@redhat.com> |
|---|---|
| Date | 2017-05-25 21:40 +0200 |
| Subject | Re: [patch 2/2] MM: allow per-cpu vmstat_threshold and vmstat_worker configuration |
| Message-ID | <tL6M1-3Ub-1@gated-at.bofh.it> |
On Fri, May 19, 2017 at 01:49:34PM -0400, Luiz Capitulino wrote: > On Fri, 19 May 2017 12:13:26 -0500 (CDT) > Christoph Lameter <cl@linux.com> wrote: > > > > So why are you against integrating this simple, isolated patch which > > > does not affect how current logic works? > > > > Frankly the argument does not make sense. Vmstat updates occur very > > infrequently (probably even less than you IPIs and the other OS stuff that > > also causes additional latencies that you seem to be willing to tolerate). > > Infrequently is not good enough. It only has to happen once to > cause a problem. > > Also, IPIs take a few us, usually less. That's not a problem. In our > testing we see the preemption caused by the kworker take 10us or > even more. I've never seeing it take 3us. I'm not saying this is not > true, I'm saying if this is causing a problem to us it will cause > a problem to other people too. Christoph, Some data: qemu-system-x86-12902 [003] ....1.. 6517.621557: kvm_exit: reason EXTERNAL_INTERRUPT rip 0x4004f1 info 0 800000fc qemu-system-x86-12902 [003] d...2.. 6517.621557: kvm_entry: vcpu 2 qemu-system-x86-12902 [003] ....1.. 6517.621560: kvm_exit: reason EXTERNAL_INTERRUPT rip 0x4004f1 info 0 800000fc qemu-system-x86-12902 [003] d...2.. 6517.621561: kvm_entry: vcpu 2 qemu-system-x86-12902 [003] ....1.. 6517.621563: kvm_exit: reason EXTERNAL_INTERRUPT rip 0x4004f1 info 0 800000fc qemu-system-x86-12902 [003] d...2.. 6517.621564: kvm_entry: vcpu 2 qemu-system-x86-12902 [003] d..h1.. 6517.622037: empty_smp_call_func: empty_smp_call_func ran qemu-system-x86-12902 [003] ....1.. 6517.622040: kvm_exit: reason EXTERNAL_INTERRUPT rip 0x4004f1 info 0 800000fb qemu-system-x86-12902 [003] d...2.. 6517.622041: kvm_entry: vcpu 2 empty_smp_function_call: 3us. qemu-system-x86-12902 [003] ....1.. 6517.702739: kvm_exit: reason EXTERNAL_INTERRUPT rip 0x4004f1 info 0 800000ef qemu-system-x86-12902 [003] d...2.. 6517.702741: kvm_entry: vcpu 2 qemu-system-x86-12902 [003] d..h1.. 6517.702758: scheduler_tick <-update_process_times qemu-system-x86-12902 [003] ....1.. 6517.702760: kvm_exit: reason EXTERNAL_INTERRUPT rip 0x4004f1 info 0 800000ef qemu-system-x86-12902 [003] d...2.. 6517.702760: kvm_entry: vcpu 2 scheduler_tick: 2us. qemu-system-x86-12902 [003] ....1.. 6518.194570: kvm_exit: reason EXTERNAL_INTERRUPT rip 0x4004f1 info 0 800000ef qemu-system-x86-12902 [003] d...2.. 6518.194571: kvm_entry: vcpu 2 qemu-system-x86-12902 [003] ....1.. 6518.194591: kvm_exit: reason EXTERNAL_INTERRUPT rip 0x4004f1 info 0 800000ef qemu-system-x86-12902 [003] d...2.. 6518.194593: kvm_entry: vcpu 2 That, and the 10us number for kworker mentioned above changes your point of view of your "Frankly the argument does not make sense. Vmstat updates occur very infrequently (probably even less than you IPIs and the other OS stuff that also causes additional latencies that you seem to be willing to tolerate). And you can configure the interval of vmstat updates freely.... Set the vmstat_interval to 60 seconds instead of 2 for a try? Is that rare enough?" Argument? We're showing you the data that this is causing a latency problem for us. Is there anything you'd like to be improved on the patch? Is there anything you dislike about it? > No, we'd have to set it high enough to disable it and this will > affect all CPUs. > > Something that crossed my mind was to add a new tunable to set > the vmstat_interval for each CPU, this way we could essentially > disable it to the CPUs where DPDK is running. What's the implications > of doing this besides not getting up to date stats in /proc/vmstat > (which I still have to confirm would be OK)? Can this break anything > in the kernel for example? Well, you get incorrect statistics.
[toc] | [next] | [standalone]
| From | Christoph Lameter <cl@linux.com> |
|---|---|
| Date | 2017-05-26 05:30 +0200 |
| Message-ID | <tLe6R-xj-1@gated-at.bofh.it> |
| In reply to | #1650771 |
On Thu, 25 May 2017, Marcelo Tosatti wrote: > Argument? We're showing you the data that this is causing a latency > problem for us. Sorry I am not sure where the data shows a latency problem. There are interrupts and scheduler ticks. But what does this have to do with vmstat? Show me your dpdk code running and trace the tick on / off events as well as the vmstat invocations. Also show all system calls occurring on the cpu that runs dpdk. That is necessary to see what triggers vmstat and how the system reacts to the changes to the differentials. Then please rerun the test by setting the vmstat_interval to 60. Do another run with your modifications and show the difference. > > Something that crossed my mind was to add a new tunable to set > > the vmstat_interval for each CPU, this way we could essentially > > disable it to the CPUs where DPDK is running. What's the implications > > of doing this besides not getting up to date stats in /proc/vmstat > > (which I still have to confirm would be OK)? Can this break anything > > in the kernel for example? > > Well, you get incorrect statistics. The statistics are never completely accurate. You will get less accurate statistics but they will be correct. The differentials may not be reflected in the counts shown via /proc but there is a cap on how inaccurate those can becore.
[toc] | [prev] | [next] | [standalone]
| From | Marcelo Tosatti <mtosatti@redhat.com> |
|---|---|
| Date | 2017-05-26 21:20 +0200 |
| Message-ID | <tLsWe-1pQ-21@gated-at.bofh.it> |
| In reply to | #1651055 |
On Thu, May 25, 2017 at 10:24:46PM -0500, Christoph Lameter wrote: > On Thu, 25 May 2017, Marcelo Tosatti wrote: > > > Argument? We're showing you the data that this is causing a latency > > problem for us. > > Sorry I am not sure where the data shows a latency problem. There are > interrupts and scheduler ticks. But what does this have to do with vmstat? > > Show me your dpdk code running and trace the tick on / off events as well > as the vmstat invocations. Also show all system calls occurring on the cpu > that runs dpdk. That is necessary to see what triggers vmstat and how the > system reacts to the changes to the differentials. Sure, i can get that to you. The question remains: Are you arguing its not valid for a realtime application to use any system call which changes a vmstat counter? Because if they are allowed, then its obvious something like this is needed. > Then please rerun the test by setting the vmstat_interval to 60. > > Do another run with your modifications and show the difference. Will do so. > > > Something that crossed my mind was to add a new tunable to set > > > the vmstat_interval for each CPU, this way we could essentially > > > disable it to the CPUs where DPDK is running. What's the implications > > > of doing this besides not getting up to date stats in /proc/vmstat > > > (which I still have to confirm would be OK)? Can this break anything > > > in the kernel for example? > > > > Well, you get incorrect statistics. > > The statistics are never completely accurate. You will get less accurate > statistics but they will be correct. The differentials may not be > reflected in the counts shown via /proc but there is a cap on how > inaccurate those can becore.
[toc] | [prev] | [next] | [standalone]
| From | Christoph Lameter <cl@linux.com> |
|---|---|
| Date | 2017-05-30 20:20 +0200 |
| Message-ID | <tMTUl-2jI-19@gated-at.bofh.it> |
| In reply to | #1651579 |
On Fri, 26 May 2017, Marcelo Tosatti wrote: > > interrupts and scheduler ticks. But what does this have to do with vmstat? > > > > Show me your dpdk code running and trace the tick on / off events as well > > as the vmstat invocations. Also show all system calls occurring on the cpu > > that runs dpdk. That is necessary to see what triggers vmstat and how the > > system reacts to the changes to the differentials. > > Sure, i can get that to you. The question remains: Are you arguing > its not valid for a realtime application to use any system call > which changes a vmstat counter? A true realtime app would be conscientious of its use of the OS services because the use of the services may cause additional latencies and also cause timers etc to fire later. A realtime app that is willing to use these services is therefore willing to tolerate larger latencies. A realtime app that is using OS service may cause the timer tick to be enabled which also causes additional latencies. I have seen completely OS noise free processing for extended time period when not using OS services and using RDMA for I/O. This fits my use case well. If there are really these high latencies because of kworker processing for vmstat then maybe we need a different mechanism there (bh? or other triggers) and maybe we are using far too many counters so that the processing becomes a heavy user of resources. > Because if they are allowed, then its obvious something like > this is needed. I am still wondering what benefit there is. Lets get clear on the test load and see if this actually makes sense.
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web