2016-06-27 16:40:31 +03:00
/*
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation ; either
* version 2.1 of the License , or ( at your option ) any later version .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library . If not , see
* < http : //www.gnu.org/licenses/>.
*/
# include <config.h>
# include "virhostcpu.h"
2021-01-20 13:30:34 +03:00
# include "virhostmem.h"
2021-07-22 12:45:38 +03:00
# if WITH_QEMU
# include "virmock.h"
# include "qemu / qemu_capabilities.h"
# endif
2016-06-27 16:40:31 +03:00
int
virHostCPUGetKVMMaxVCPUs ( void )
{
return INT_MAX ;
}
domaincapsmock: mock virHostCPUGetMicrocodeVersion()
Previous patch handled the runtime case where a non-x86 host is
fetching /proc/cpuinfo data for a microcode info that we know
it doesn't exist. This change alone speeded everything by a
bit for non-x86, but there is at least one major culprit left.
qemuxml2argvtest does several arch-specific tests, and a good
chunk of them are x86 exclusive. This means that 'hostArch'
will be seen as x86 for these tests, even when running in
non-x86 hosts. In a Power 9 server with 128 CPUs, qemuxml2argvtest
takes 298 seconds to complete in average, and 'perf record'
indicates that 95% of the time is spent in
virHostCPUGetMicrocodeVersion().
This patch mocks virHostCPUGetMicrocodeVersion() to always return
0 in the tests, avoiding /proc/cpuinfo reads. This will make all
tests behave arch-agnostic, and the microcode value being 0 has no
impact on any existing test.
This is a CI speed across the board for all archs, including x86,
given that we're not reading /proc/cpuinfo in the tests. For
a Thinkpad T480 laptop with 8 Intel i7 CPUs, qemuxml2argvtest
went from 15.50 sec to 12.50 seconds. The performance gain is even
more noticeable for huge servers with lots of CPUs. For the
Power 9 server mentioned above, this patch speeds qemuxml2argvtest
to 9 seconds, down from 298 sec.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2020-08-24 16:27:54 +03:00
unsigned int
virHostCPUGetMicrocodeVersion ( virArch hostArch G_GNUC_UNUSED )
{
return 0 ;
}
2021-07-16 12:44:32 +03:00
2021-07-22 12:45:38 +03:00
# if WITH_QEMU
2021-07-16 12:44:32 +03:00
static bool ( * real_virQEMUCapsGetKVMSupportsSecureGuest ) ( virQEMUCaps * qemuCaps ) ;
bool
virQEMUCapsGetKVMSupportsSecureGuest ( virQEMUCaps * qemuCaps )
{
if ( virQEMUCapsGet ( qemuCaps , QEMU_CAPS_MACHINE_CONFIDENTAL_GUEST_SUPPORT ) & &
virQEMUCapsGet ( qemuCaps , QEMU_CAPS_S390_PV_GUEST ) )
return true ;
if ( ! real_virQEMUCapsGetKVMSupportsSecureGuest )
VIR_MOCK_REAL_INIT ( virQEMUCapsGetKVMSupportsSecureGuest ) ;
return real_virQEMUCapsGetKVMSupportsSecureGuest ( qemuCaps ) ;
}
2021-07-22 12:45:38 +03:00
# endif
2021-01-20 13:30:34 +03:00
int
virHostMemGetTHPSize ( unsigned long long * size )
{
/* Pretend Transparent Huge Page size is 2MiB. */
* size = 2048 ;
return 0 ;
}