Re: [kvm PATCH 1/1] kvm: Make VM ioctl do a vzalloc instead of a kzalloc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 04/23/2018 09:48 PM, David Rientjes wrote:
> On Mon, 23 Apr 2018, David Matlack wrote:
> 
>>> Seems to be
>>>          struct hlist_head          mmu_page_hash[4096];  /*    24 32768 */
>>
>>> in kvm_arch.
>>
>>> This is now much larger mostly due to
>>
>>> commit 114df303a7eeae8b50ebf68229b7e647714a9bea
>>>      kvm: x86: reduce collisions in mmu_page_hash
>>
>>
>>> So maybe it is enough to allocate mmu_page_hash seperately? Adding David
>> Matlack
>>> for opinions.
>>
>> Allocating mmu_page_hash separately would not create any issues I can think
>> of. But Mark's concern about future bloat still remains.
>>
>> One option to move forward  would be to make this change x86-specific by
>> overriding kvm_arch_{alloc,free}_vm. Other architectures could do the same
>> once they check that it's safe.

That would certainly work. On the other hand it would be good if we could keep
as much code as possible common across architectures.
Paolo, Radim, any preference?
>>
> 
> x86 already appears to be doing that in kvm_x86_ops, but struct kvm_arch 
> still is embedded into struct kvm.  I'm wondering if there are any issues 
> with dynamically allocating kvm_arch for all architectures and then having 
> a per-arch override for how to allocate struct kvm_arch (kzalloc or 
> vzalloc or something else) depending on its needs?

The disadvantage of allocation vs embedding is that this is one additional pointer
chase for code that could be cache cold (e.g. guest was running). I have absolutely
no idea if that matters at all or not. 




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux