Message ID | 20210413080745.33004-1-wangyanan55@huawei.com |
---|---|
Headers | show |
Series | hw/arm/virt: Introduce cpu topology support | expand |
Hey guys, any comments will be really welcomed and appreciated! 😉 Thanks, Yanan On 2021/4/13 16:07, Yanan Wang wrote: > Hi, > > This series is a new version of [0] recently posted by Ying Fang > to introduce cpu topology support for ARM platform. I have taken > over his work about this now, thanks for his contribution. > > Description: > An accurate cpu topology may help improve the cpu scheduler's decision > making when dealing with multi-core system. So cpu topology description > is helpful to provide guest with the right view. Dario Faggioli's talk > in [1] also shows the virtual topology could have impact on scheduling > performace. Thus this patch series introduces cpu topology support for > ARM platform. > > This series originally comes from Andrew Jones's patches [2], but with > some re-arrangement. Thanks for Andrew's contribution. In this series, > both fdt and ACPI PPTT table are introduced to present cpu topology to > the guest. And a new function virt_smp_parse() not like the default > smp_parse() is introduced, which prefers cores over sockets. > > [0] https://patchwork.kernel.org/project/qemu-devel/cover/20210225085627.2263-1-fangying1@huawei.com/ > [1] https://kvmforum2020.sched.com/event/eE1y/virtual-topology-for-virtual-machines-friend-or-foe-dario-faggioli-suse > [2] https://github.com/rhdrjones/qemu/commit/ecfc1565f22187d2c715a99bbcd35cf3a7e428fa > > Test results: > After applying this patch series, launch a guest with virt-6.0 and cpu > topology configured with: -smp 96,sockets=2,clusters=6,cores=4,threads=2, > VM's cpu topology description shows as below. > > Architecture: aarch64 > Byte Order: Little Endian > CPU(s): 96 > On-line CPU(s) list: 0-95 > Thread(s) per core: 2 > Core(s) per socket: 24 > Socket(s): 2 > NUMA node(s): 1 > Vendor ID: 0x48 > Model: 0 > Stepping: 0x1 > BogoMIPS: 200.00 > NUMA node0 CPU(s): 0-95 > > --- > > Changelogs: > v1->v2: > - Address Andrew Jones's comments > - Address Michael S. Tsirkin's comments > - Pick up one more patch(patch#6) of Andrew Jones > - Rebased on v6.0.0-rc2 release > > --- > > Andrew Jones (3): > device_tree: Add qemu_fdt_add_path > hw/arm/virt: DT: Add cpu-map > hw/arm/virt: Replace smp_parse with one that prefers cores > > Yanan Wang (2): > hw/acpi/aml-build: Add processor hierarchy node structure > hw/arm/virt-acpi-build: Add PPTT table > > Ying Fang (1): > hw/arm/virt-acpi-build: Distinguish possible and present cpus > > hw/acpi/aml-build.c | 27 ++++++++ > hw/arm/virt-acpi-build.c | 77 ++++++++++++++++++++-- > hw/arm/virt.c | 120 ++++++++++++++++++++++++++++++++++- > include/hw/acpi/aml-build.h | 4 ++ > include/hw/arm/virt.h | 1 + > include/sysemu/device_tree.h | 1 + > softmmu/device_tree.c | 45 ++++++++++++- > 7 files changed, 268 insertions(+), 7 deletions(-) >
On 2021/4/13 16:07, Yanan Wang wrote: > Hi, > > This series is a new version of [0] recently posted by Ying Fang > to introduce cpu topology support for ARM platform. I have taken > over his work about this now, thanks for his contribution. > > Description: > An accurate cpu topology may help improve the cpu scheduler's decision > making when dealing with multi-core system. So cpu topology description > is helpful to provide guest with the right view. Dario Faggioli's talk > in [1] also shows the virtual topology could have impact on scheduling > performace. Thus this patch series introduces cpu topology support for > ARM platform. > > This series originally comes from Andrew Jones's patches [2], but with > some re-arrangement. Thanks for Andrew's contribution. In this series, > both fdt and ACPI PPTT table are introduced to present cpu topology to > the guest. And a new function virt_smp_parse() not like the default > smp_parse() is introduced, which prefers cores over sockets. > > [0] https://patchwork.kernel.org/project/qemu-devel/cover/20210225085627.2263-1-fangying1@huawei.com/ > [1] https://kvmforum2020.sched.com/event/eE1y/virtual-topology-for-virtual-machines-friend-or-foe-dario-faggioli-suse > [2] https://github.com/rhdrjones/qemu/commit/ecfc1565f22187d2c715a99bbcd35cf3a7e428fa > > Test results: > After applying this patch series, launch a guest with virt-6.0 and cpu > topology configured with: -smp 96,sockets=2,clusters=6,cores=4,threads=2, Fix the incorrect statement: Here the command line was "-smp 96, sockets=2, cores=24,threads=2" in reality. Thanks, Yanan > VM's cpu topology description shows as below. > > Architecture: aarch64 > Byte Order: Little Endian > CPU(s): 96 > On-line CPU(s) list: 0-95 > Thread(s) per core: 2 > Core(s) per socket: 24 > Socket(s): 2 > NUMA node(s): 1 > Vendor ID: 0x48 > Model: 0 > Stepping: 0x1 > BogoMIPS: 200.00 > NUMA node0 CPU(s): 0-95 > > --- > > Changelogs: > v1->v2: > - Address Andrew Jones's comments > - Address Michael S. Tsirkin's comments > - Pick up one more patch(patch#6) of Andrew Jones > - Rebased on v6.0.0-rc2 release > > --- > > Andrew Jones (3): > device_tree: Add qemu_fdt_add_path > hw/arm/virt: DT: Add cpu-map > hw/arm/virt: Replace smp_parse with one that prefers cores > > Yanan Wang (2): > hw/acpi/aml-build: Add processor hierarchy node structure > hw/arm/virt-acpi-build: Add PPTT table > > Ying Fang (1): > hw/arm/virt-acpi-build: Distinguish possible and present cpus > > hw/acpi/aml-build.c | 27 ++++++++ > hw/arm/virt-acpi-build.c | 77 ++++++++++++++++++++-- > hw/arm/virt.c | 120 ++++++++++++++++++++++++++++++++++- > include/hw/acpi/aml-build.h | 4 ++ > include/hw/arm/virt.h | 1 + > include/sysemu/device_tree.h | 1 + > softmmu/device_tree.c | 45 ++++++++++++- > 7 files changed, 268 insertions(+), 7 deletions(-) >