On Sun, Nov 29, 2015 at 6:01 PM, Yaniv Kaul <yk...@redhat.com> wrote: > On Sun, Nov 29, 2015 at 5:37 PM, Nir Soffer <nsof...@redhat.com> wrote: >> >> On Sun, Nov 29, 2015 at 10:37 AM, Yaniv Kaul <yk...@redhat.com> wrote: >> > >> > On Fri, Nov 27, 2015 at 6:55 PM, Francesco Romani <from...@redhat.com> >> > wrote: >> >> >> >> Using taskset, the ip command now takes a little longer to complete. >> > >> > >> > Since we always use the same set of CPUs, I assume using a mask (for 0 & >> > 1, >> > just use 0x3, as the man suggests) might be a tiny of a fraction faster >> > to >> > execute taskset with, instead of the need to translate the numeric CPU >> > list. >> >> Creating the string "0-<last cpu index>" is one line in vdsm. The code >> handling this in >> taskset is written in C, so the parsing time is practically zero. Even >> if it was non-zero, >> this code run once when we run a child process, so the cost is >> insignificant. > > > I think it's easier to just to have it as a mask in a config item somewhere, > without need to create it or parse it anywhere. > For us and for the user.
We have this option in /etc/vdsm/vdsm.conf: # Comma separated whitelist of CPU cores on which VDSM is allowed to # run. The default is "", meaning VDSM can be scheduled by the OS to # run on any core. Valid examples: "1", "0,1", "0,2,3" # cpu_affinity = 1 I think this is the easiest option for users. >> > However, the real concern is making sure CPUs 0 & 1 are not really too >> > busy >> > with stuff (including interrupt handling, etc.) >> >> This code is used when we run a child process, to allow the child >> process to run on >> all cpus (in this case, cpu 0 and cpu 1). So I think there is no concern >> here. >> >> Vdsm itself is running by default on cpu 1, which should be less busy >> then cpu 0. > > > I assume those are cores, which probably in a multi-socket will be in the > first socket only. > There's a good chance that the FC and or network/cards will also bind their > interrupts to core0 & core 1 (check /proc/interrupts) on the same socket. > From my poor laptop (1s, 4c): > 42: 1487104 9329 4042 3598 IR-PCI-MSI 512000-edge > 0000:00:1f.2 > > (my SATA controller) > > 43: 14664923 34 18 13 IR-PCI-MSI 327680-edge > xhci_hcd > (my dock station connector) > > 45: 6754579 4437 2501 2419 IR-PCI-MSI 32768-edge > i915 > (GPU) > > 47: 187409 11627 1235 1259 IR-PCI-MSI 2097152-edge > iwlwifi > (NIC, wifi) Interesting, here an example from a 8 cores machine running my vms: [nsoffer@jumbo ~]$ cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 0: 31 0 0 0 0 0 0 0 IR-IO-APIC-edge timer 1: 2 0 0 1 0 0 0 0 IR-IO-APIC-edge i8042 8: 0 0 0 0 0 0 0 1 IR-IO-APIC-edge rtc0 9: 0 0 0 0 0 0 0 0 IR-IO-APIC-fasteoi acpi 12: 3 0 0 0 0 0 1 0 IR-IO-APIC-edge i8042 16: 4 4 9 0 9 1 1 3 IR-IO-APIC 16-fasteoi ehci_hcd:usb3 23: 13 1 5 0 12 1 1 0 IR-IO-APIC 23-fasteoi ehci_hcd:usb4 24: 0 0 0 0 0 0 0 0 DMAR_MSI-edge dmar0 25: 0 0 0 0 0 0 0 0 DMAR_MSI-edge dmar1 26: 3670 354 215 9062370 491 124 169 54 IR-PCI-MSI-edge 0000:00:1f.2 27: 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge xhci_hcd 28: 166285414 0 3 0 4 0 0 0 IR-PCI-MSI-edge em1 29: 18 0 0 0 4 3 0 0 IR-PCI-MSI-edge mei_me 30: 1 151 17 0 3 169 26 94 IR-PCI-MSI-edge snd_hda_intel NMI: 2508 2296 2317 2356 867 918 912 903 Non-maskable interrupts LOC: 302996116 312923350 312295375 312089303 86282447 94046427 90847792 91761277 Local timer interrupts SPU: 0 0 0 0 0 0 0 0 Spurious interrupts PMI: 2508 2296 2317 2356 867 918 912 903 Performance monitoring interrupts IWI: 1 0 0 5 0 0 0 0 IRQ work interrupts RTR: 0 0 0 0 0 0 0 0 APIC ICR read retries RES: 34480637 12953645 13139863 14309885 8881861 10110753 9709070 9703933 Rescheduling interrupts CAL: 7387779 7682087 7283716 7135792 2771105 1785528 1887493 1843734 Function call interrupts TLB: 11121 16458 17923 15216 8534 8173 8639 7837 TLB shootdowns TRM: 0 0 0 0 0 0 0 0 Thermal event interrupts THR: 0 0 0 0 0 0 0 0 Threshold APIC interrupts MCE: 0 0 0 0 0 0 0 0 Machine check exceptions MCP: 7789 7789 7789 7789 7789 7789 7789 7789 Machine check polls HYP: 0 0 0 0 0 0 0 0 Hypervisor callback interrupts ERR: 0 MIS: 0 It seems that our default (CPU1) is fine. Francesco, what do you think? Nir
_______________________________________________ Infra mailing list Infra@ovirt.org http://lists.ovirt.org/mailman/listinfo/infra