Dnfdragora very slow | Fedora33 Mate Spin

I noticed that Dnfdragora needs a lot of time to prepare for updates.
Just to show the available updates it takes in my opinion to long. I use F33 with libvirt as guest.
My host OS is Fedora32 Gnome with installed mate desktop.

When i do dnf update in terminal it not takes so long.

What is the best way to debug it?
DNF i allready optimized a bit.

2 Likes

Do you mean libvirt?

sudo virt-host-validate
virsh list --all
virsh dumpxml guest_name
1 Like

yes :roll_eyes: sorry

1 Like
QEMU: Checking for hardware virtualization                                : PASS
QEMU: Checking if device /dev/kvm exists                                  : PASS
QEMU: Checking if device /dev/kvm is accessible                           : PASS
QEMU: Checking if device /dev/vhost-net exists                            : PASS
QEMU: Checking if device /dev/net/tun exists                              : PASS
QEMU: Checking for cgroup 'cpu' controller support                        : WARN (Enable 'cpu' in kernelKconfig file or mount/enable cgroup controller in your system)
QEMU: Checking for cgroup 'cpuacct' controller support                    : PASS
QEMU: Checking for cgroup 'cpuset' controller support                     : WARN (Enable 'cpuset' in kernel Kconfig file or mount/enable cgroup controller in your system)
QEMU: Checking for cgroup 'memory' controller support                     : PASS
QEMU: Checking for cgroup 'devices' controller support                    : PASS
QEMU: Checking for cgroup 'blkio' controller support                      : WARN (Enable 'blkio' in kernel Kconfig file or mount/enable cgroup controller in your system)
QEMU: Checking for device assignment IOMMU support                        : PASS
QEMU: Checking if IOMMU is enabled by kernel                              : WARN (IOMMU appears to be disabled in kernel. Add intel_iommu=on to kernel cmdline arguments)
LXC: Checking for Linux >= 2.6.26                                         : PASS
LXC: Checking for namespace ipc                                           : PASS
LXC: Checking for namespace mnt                                           : PASS
LXC: Checking for namespace pid                                           : PASS
LXC: Checking for namespace uts                                           : PASS
LXC: Checking for namespace net                                           : PASS
LXC: Checking for namespace user                                          : PASS
LXC: Checking for cgroup 'cpu' controller support                         : FAIL (Enable 'cpu' in kernel Kconfig file or mount/enable cgroup controller in your system)
LXC: Checking for cgroup 'cpuacct' controller support                     : PASS
LXC: Checking for cgroup 'cpuset' controller support                      : FAIL (Enable 'cpuset' in kernel Kconfig file or mount/enable cgroup controller in your system)
LXC: Checking for cgroup 'memory' controller support                      : PASS
LXC: Checking for cgroup 'devices' controller support                     : PASS
LXC: Checking for cgroup 'freezer' controller support                     : FAIL (Enable 'freezer' in kernel Kconfig file or mount/enable cgroup controller in your system)
LXC: Checking for cgroup 'blkio' controller support                       : FAIL (Enable 'blkio' in kernel Kconfig file or mount/enable cgroup controller in your system)
LXC: Checking if device /sys/fs/fuse/connections exists                   : PASS
 Id   Name   State

it is empty, what ever this means.

1 Like

Perhaps you are using the system mode?

sudo virsh list --all
1 Like

Ok, now it worked:

[sudo] password for luciano: 
Id   Name          State
------------------------------
1    fedora        running
-    ISO_Startup   shut off
-    ParrotOS      shut off
<domain type='kvm' id='1'>
  <name>fedora</name>
  <uuid>c6bca0e4-613a-43f1-b1f8-ce16656007b8</uuid>
  <title>Fedora33 Installation</title>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://fedoraproject.org/fedora/unknown"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory unit='KiB'>4194304</memory>
  <currentMemory unit='KiB'>4194304</currentMemory>
  <vcpu placement='static'>2</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-q35-4.1'>hvm</type>
    <bootmenu enable='no'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <vmport state='off'/>
  </features>
  <cpu mode='custom' match='exact' check='full'>
    <model fallback='forbid'>IvyBridge-IBRS</model>
    <vendor>Intel</vendor>
    <feature policy='require' name='ss'/>
    <feature policy='require' name='vmx'/>
    <feature policy='require' name='pdcm'/>
    <feature policy='require' name='pcid'/>
    <feature policy='require' name='hypervisor'/>
    <feature policy='require' name='arat'/>
    <feature policy='require' name='tsc_adjust'/>
    <feature policy='require' name='umip'/>
    <feature policy='require' name='md-clear'/>
    <feature policy='require' name='stibp'/>
    <feature policy='require' name='arch-capabilities'/>
    <feature policy='require' name='ssbd'/>
    <feature policy='require' name='xsaveopt'/>
    <feature policy='require' name='ibpb'/>
    <feature policy='require' name='amd-ssbd'/>
    <feature policy='require' name='skip-l1dfl-vmentry'/>
  </cpu>
  <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='cdrom'>
      <driver name='qemu'/>
      <target dev='sda' bus='sata'/>
      <readonly/>
      <alias name='sata0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/fedora33.qcow2' index='1'/>
      <backingStore/>
      <target dev='sdb' bus='sata'/>
      <boot order='1'/>
      <alias name='sata0-0-1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <controller type='usb' index='0' model='qemu-xhci' ports='15'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
    </controller>
    <controller type='sata' index='0'>
      <alias name='ide'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'>
      <alias name='pcie.0'/>
    </controller>
    <controller type='pci' index='1' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='1' port='0x10'/>
      <alias name='pci.1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/>
    </controller>
    <controller type='pci' index='2' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='2' port='0x11'/>
      <alias name='pci.2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/>
    </controller>
    <controller type='pci' index='3' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='3' port='0x12'/>
      <alias name='pci.3'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/>
    </controller>
    <controller type='pci' index='4' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='4' port='0x13'/>
      <alias name='pci.4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/>
    </controller>
    <controller type='pci' index='5' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='5' port='0x14'/>
      <alias name='pci.5'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/>
    </controller>
    <controller type='pci' index='6' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='6' port='0x15'/>
      <alias name='pci.6'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x5'/>
    </controller>
    <controller type='pci' index='7' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='7' port='0x16'/>
      <alias name='pci.7'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x6'/>
    </controller>
    <controller type='pci' index='8' model='pcie-to-pci-bridge'>
      <model name='pcie-pci-bridge'/>
      <alias name='pci.8'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
    </controller>
    <interface type='direct'>
      <mac address='52:54:00:b2:54:50'/>
      <source dev='enp0s25' mode='bridge'/>
      <target dev='macvtap0'/>
      <model type='e1000e'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-1-fedora/org.qemu.guest_agent.0'/>
      <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>
      <alias name='channel0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <channel type='spicevmc'>
      <target type='virtio' name='com.redhat.spice.0' state='connected'/>
      <alias name='channel1'/>
      <address type='virtio-serial' controller='0' bus='0' port='2'/>
    </channel>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'>
      <alias name='input1'/>
    </input>
    <input type='keyboard' bus='ps2'>
      <alias name='input2'/>
    </input>
    <graphics type='spice' port='5900' autoport='yes' listen='127.0.0.1'>
      <listen type='address' address='127.0.0.1'/>
      <image compression='off'/>
    </graphics>
    <sound model='ich9'>
      <alias name='sound0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
    </sound>
    <video>
      <model type='virtio' heads='1' primary='yes'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>
    <redirdev bus='usb' type='spicevmc'>
      <alias name='redir0'/>
      <address type='usb' bus='0' port='2'/>
    </redirdev>
    <redirdev bus='usb' type='spicevmc'>
      <alias name='redir1'/>
      <address type='usb' bus='0' port='3'/>
    </redirdev>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
    </memballoon>
    <rng model='virtio'>
      <backend model='random'>/dev/urandom</backend>
      <alias name='rng0'/>
      <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
    </rng>
  </devices>
  <seclabel type='dynamic' model='selinux' relabel='yes'>
    <label>system_u:system_r:svirt_t:s0:c77,c713</label>
    <imagelabel>system_u:object_r:svirt_image_t:s0:c77,c713</imagelabel>
  </seclabel>
  <seclabel type='dynamic' model='dac' relabel='yes'>
    <label>+107:+107</label>
    <imagelabel>+107:+107</imagelabel>
  </seclabel>
</domain>


1 Like

This depends on whether it’s refreshing the cache when it does this. If it is, a slow repo can cause delays, for example, or connection issues.

Does DNFDragora share the DNF cache? DNF runs a timer now that updates the cache periodically so that when you run a command, the cache is likely to be up to date already.

3 Likes

Looks fine. :+1:

DNF appears to have per user cache, so it also depends on whether DNF runs with sudo or not.

This should require the VM to be online to work properly.

Actually I’ve recently encountered similar issues while updating the modular repo metadata.
It might be a transient problem with the mirroring service.

2 Likes

This could be indeed an issue. When i start dnf i do it with sudo. When i open DNFDragora it just ask me for the Sudo password when i apply the changes. I open dnf dragora dialogue with the icon in the status bar.

I tried to start dnfdragora-updater in terminal. As my user it works. as sudo i get errors.
Is there a group wher i can join that DNFDragora is not asking me the Sudo PW to add updates?

2 Likes

The VM is online.

I do believe that popularity of Fedora causes also a bit traffic jams :grin:. And living in Brasil also not helps to have high speed internet.

If there is a way to share the dnf cache with DNFDragora i will do it.
That’s why I used dnf when i got the popup Notification, to save a bit time. No problem for me to work in terminal.

Just thinking that new user feel uncomfortable to do so (using the terminal).

2 Likes

And remember, when your cache is being built, Fedora downloads about 50 Megabytes+ of repo metadata. If you are on a slow (mobile) connection or connecting to a slow mirror, this may take a while.

2 Likes

https://admin.fedoraproject.org/mirrormanager/mirrors/Fedora/33/x86_64

I shouldn’t. There is 171 mirrors worldwide, so the load should be spread across many servers. However, Brasil seems to be underrepresented. There is a single mirror, by UFPR, for the entire country. (I am not counting Globo as mirror if their bandwidth is indeed 10 Mbit)

BR fedora.c3sl.ufpr.br fedora.c3sl.ufpr.br Fedora Linux http rsync 20000 Yes
BR Globo.com mirror.globo.com Fedora Linux http
Fedora EPEL http 10 No

You can also try to enable fastestmirror for dnf and see if that helps you connect to a faster mirror.

https://dnf.readthedocs.io/en/latest/conf_ref.html

2 Likes

Yes I’m aware of that. I do use a 40m fiber optic connection, and my computer is connected with RJ45 to the router, no Wifi or mobile in between.

My dnf.conf from Host OS (it is faster as libvirt and it is also F32):

[main]
fastesmirror=True
gpgcheck=1
max_parallel_downloads=10
installonly_limit=5
clean_requirements_on_remove=True
keepcache=True
ip_resolve=4
# exclude=thunderbird

Libvirt Fedora dnf.conf:

[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=False
skip_if_unavailable=True
fastestmirror=1
max_parallel_downloads=10
deltarpm=true

what you could do is comparing the actual download speed in both machines (baremetal and libvirt guest).

run sudo dnf clean all, then sudo dnf update and see how long it takes to refresh all repos.
(given the repos are the same, otherwise, temporarily disable some to match the repolist on both machines).

are they both connecting to the same mirror?

2 Likes

Offtopic,

I am really surprised that among the many public universities, there no other except UFPR that hosts a Fedora mirror.

Also surprising: Argentina has zero mirrors; Colombia has zero mirrors (Mexico as well, Ok, they are close to US mirrors)

Yes now i opened dnfdragora with sudo. The cache got build up and now when i reopen it got much faster, without downloading a lot.

Thanks so far to everyone. I will do some more advice’s as soon as i find time and give more feedback.

2 Likes