1 1
ab1jx

Terrible Synaptic performance

Recommended Posts

I'm running Armbian on a 4 GB Rock64, downloaded and installed yesterday.  I've been using Debian/Raspbian/Armbian for about 10 years and I've really come to rely on Synaptic for searching and being able to make download scripts.  Not every day but about once a week especially if I'm setting up something (like this Rock64).

 

This Synaptic's access to the package database seems incredibly slow.  A single search may take 20 minutes.  After installing something it reloads the list and shows it on the screen, that can be another 20 minutes.  During this time it's got 1 thread using 100% of one CPU.  Typing is sometimes impaired, window repainting usually.

 

In this picture Synaptic was behind Firefox and I clicked on it to bring it to the foreground.  That still hadn't happened here (it finally did) and I wanted to screenshot it, so there are also bits of the screenshot utility being dragged off the screen.  Synaptic's using too much CPU for the screen to be redrawn.

 

From my database experience it reminds me of one time I forgot to build an index on a table.  It can still be searched but very slowly.  Every access requires reading the whole thing over again.  I always thought it was strange there wasn't a normal SQL database somewhere, /var/cache/apt/pkgcache.bin may be it:


rock64# file pkgcache.bin
pkgcache.bin: APT cache data, version 11.0, little-endian, 68706 packages, 102453 versions

But I don't think it's possible to use the nice GUI editors like for PostgreSQL, MySQL, SqlLite on it.

 

The page in Firefox was an interesting article at https://unix.stackexchange.com/questions/383999/why-are-some-packages-not-available-in-my-debian-jessie-installation

about fixing some apt/synaptic problems but didn't help in this case.  Oh, and I'm now subscribed to the mailing list synaptic-devel@nongnu.org but I could be the only one.  The last Synaptic changes were in 2012.

 

The problem seems peculiar to Armian, Synaptic works normally in Raspbian and Debian Buster.  Could be file permissions (but not obvious) or some PAM/Selinux/Apparmor thing.  The FileMagic (https://en.wikipedia.org/wiki/Magic_number_(programming)#Magic_numbers_in_files on this pkgcache.bin is DC 76 FE 98.

bad_repainting.gif

Share this post


Link to post
Share on other sites
14 hours ago, ab1jx said:

Synaptic works normally in Raspbian and Debian Buster. 


On Intel machine with SSD :) or on the same hardware with SD card? This would explain the diff.

 

Rock64 has not a matured kernel support yet which means it can be anything while userspace is not much changed. We use upstream Debian base + few optimizations on the top which, I doubt, has anything to do with this.

Share this post


Link to post
Share on other sites
2 hours ago, Igor said:


On Intel machine with SSD :) or on the same hardware with SD card? This would explain the diff.

 

Rock64 has not a matured kernel support yet which means it can be anything while userspace is not much changed. We use upstream Debian base + few optimizations on the top which, I doubt, has anything to do with this.

 

I don't use any Intel machines, my "big machine" is a Pi.   I was hoping the Rock64 would be.  I have a SD with Raspbian around still but for 3 weeks or so I've been running this arm64 Buster image.  It's pretty close to perfect, very stable, no surprises.  https://people.debian.org/~stapelberg/raspberrypi3/

Sounds like he doesn't want to go on maintaining it, it's dated 2018-01-08. I've been doing updates and upgrades, which work fine.  In the sources.list are buster and unstable.  Runs on Pi hardware only though, I'm on a 3B.

 

One thing I haven't tried is just deleting/moving the cache file and letting it get replaced.  I'll probably also turn off compression, but it's an option in at least 2 or 3 places.  Just looking at the arm64 Pi's files in /etc/apt there's no mention of compression.

 

NetworkManager is about to get the axe I think, I don't like that or wicd.  It should have been able to run headless overnight but it kept dropping leases, I couldn't ssh to it.  I just use a simple interfaces file.  I don't have a USB KVM switch so only one machine gets hooked up at a time.

Share this post


Link to post
Share on other sites

Taking the compress out (of the /etc/apt files), deleting the cache, rebooting, didn't make any difference.  I got the source to Synaptic with the intention of trying to profile it to see where it's hanging up.  I bought the Rock64 to run the latest Gimp, I frequently build stuff that isn't in the debs.  I need search to work.  Spent a couple days trying to build firefox with 1 GB of RAM on a Pi, had to give up.  There are a lot of dependencies, you can find all of them by searching in Synaptic.  The deb Rust is too old, but install that and upgrade it.

 

My 3-line interface file seems to work fine without NetworkManager interference.  I disabled it with systemctl.  All I need is:


auto wlx0022c0cc0822

iface wlx0022c0cc0822 inet dhcp
  wireless-essid Moto_lte

So the interface name is always wlx and the MAC?  Interesting.

 

Hmm:


rock64# pwd
/usr/src/misc/synaptic/synaptic-0.84.2
rock64# grep -ir sql .
./README.tasks:database-server SQL database
./README.supported:database-server SQL database
Binary file ./help/sv/figures/synaptic-repositories.png matches
Binary file ./help/sv/figures/synaptic-packagedetails.png matches

Oh, it's only in the examples of what Synaptic could install, I was hoping there was a plan to convert to SQL or capability to export to SQL.  Seems to be abandoned since 2012, the mailing list has been dead so far, no answer to the question I sent to it yesterday.

 

Ughh, I'm getting texlive (1 GB) because I needed xmlto.

 

Share this post


Link to post
Share on other sites
(edited)

OK, this is from sysprof, I couldn't get gprof to work on it.


SELF CUMULATIVE FUNCTION [ 0.24%] [ 100.00%] [Everything] [ 0.00%] [ 91.73%] [pool] [ 0.07%] [ 91.49%] In file /usr/sbin/synaptic [ 0.00%] [ 90.67%] pkgRecords::Lookup(pkgCache::DescFileIterator const&) [ 0.00%] [ 90.65%] pkgTagFile::Jump(pkgTagSection&, unsigned long long) [ 0.00%] [ 0.02%] pkgTagFile::Step(pkgTagSection&) [ 0.01%] [ 0.01%] memchr [ 0.00%] [ 0.00%] pkgTagSection::Scan(char const*, unsigned long, bool) [ 0.00%] [ 0.00%] pkgTagHash(char const*, unsigned long) [ 0.00%] [ 0.00%] In file /usr/lib/aarch64-linux-gnu/libapt-pkg.so.5.0.1 [ 0.00%] [ 0.00%] memset [ 0.00%] [ 0.00%] pkgTagSection::TrimRecord(bool, char const*&) [ 0.00%] [ 0.00%] In file /usr/lib/aarch64-linux-gnu/libapt-pkg.so.5.0.1 [ 0.00%] [ 0.00%] FileFd::Seek(unsigned long long) [ 0.00%] [ 0.00%] pkgTagSection::Scan(char const*, unsigned long, bool) [ 0.00%] [ 0.00%] pkgTagSection::Trim() [ 0.00%] [ 0.00%] FileFd::Skip(unsigned long long) [ 0.00%] [ 0.00%] pkgTagHash(char const*, unsigned long) [ 0.00%] [ 0.00%] memchr [ 0.00%] [ 0.00%] pkgTagSection::TrimRecord(bool, char const*&) [ 0.00%] [ 0.00%] memset [ 0.00%] [ 0.35%] pkgPackageManager::GetArchives(pkgAcquire*, pkgSourceList*, pkgRecords*) [ 0.00%] [ 0.07%] gtk_main_iteration [ 0.00%] [ 0.07%] gtk_dialog_run [ 0.02%] [ 0.05%] In file /usr/lib/aarch64-linux-gnu/libapt-pkg.so.5.0.1 [ 0.00%] [ 0.04%] pkgPackageManager::OrderInstall() [ 0.00%] [ 0.03%] Configuration::FindI(char const*, int const&) const [ 0.00%] [ 0.02%] pkgRecords::Lookup(pkgCache::VerFileIterator const&) [ 0.00%] [ 0.01%] pkgSourceList::ReadMainList() [ 0.00%] [ 0.01%] std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_append(char const*, unsigned long) [ 0.01%] [ 0.01%] strcmp [ 0.01%] [ 0.01%] pkgCache::VerIterator::Downloadable() const [ 0.00%] [ 0.01%] gtk_events_pending [ 0.01%] [ 0.01%] __strcasestr [ 0.01%] [ 0.01%] In file /lib/aarch64-linux-gnu/libc-2.24.so [ 0.01%] [ 0.01%] pkgCache::VerIterator::TranslatedDescription() const [ 0.00%] [ 0.00%] pkgDepCache::ActionGroup::release() [ 0.00%] [ 0.00%] pkgAcquire::Run(int) [ 0.00%] [ 0.00%] XSync [ 0.00%] [ 0.00%] gtk_builder_add_from_file [ 0.00%] [ 0.00%] In file /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.22 [ 0.00%] [ 0.00%] operator new(unsigned long) [ 0.00%] [ 0.00%] std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace(unsigned long, unsigned long, char const*, unsigned long) [ 0.00%] [ 0.00%] OpProgress::Progress(unsigned long long) [ 0.00%] [ 0.00%] gtk_tree_view_set_model [ 0.00%] [ 0.00%] gtk_widget_show [ 0.00%] [ 0.00%] OpProgress::CheckChange(float) [ 0.00%] [ 0.00%] strcpy [ 0.00%] [ 0.00%] __read [ 0.00%] [ 0.00%] strlen [ 0.00%] [ 0.00%] gtk_list_store_set [ 0.00%] [ 0.00%] memcpy [ 0.00%] [ 0.00%] debSystem::CreatePM(pkgDepCache*) const [ 0.00%] [ 0.00%] std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::find(char, unsigned long) const [ 0.00%] [ 0.00%] gtk_progress_bar_set_fraction [ 0.00%] [ 0.00%] Configuration::Lookup(char const*, bool const&) [ 0.00%] [ 0.00%] free [ 0.00%] [ 0.00%] gtk_widget_set_sensitive [ 0.00%] [ 0.00%] __nanosleep [ 0.00%] [ 0.00%] gtk_menu_popup [ 0.00%] [ 0.00%] bcmp [ 0.00%] [ 0.00%] gtk_label_set_text [ 0.00%] [ 0.00%] strncasecmp [ 0.00%] [ 0.00%] operator delete(void*) [ 0.00%] [ 0.00%] g_object_new [ 0.00%] [ 0.00%] g_object_run_dispose [ 0.00%] [ 0.00%] memchr [ 0.00%] [ 0.00%] gtk_tree_view_column_new_with_attributes [ 0.00%] [ 0.00%] gtk_message_dialog_new [ 0.00%] [ 0.00%] In file /usr/lib/aarch64-linux-gnu/libgtk-3.so.0.2200.11 [ 0.00%] [ 0.00%] gtk_list_store_insert [ 0.00%] [ 0.00%] pkgDPkgPM::~pkgDPkgPM() [ 0.00%] [ 0.00%] time [ 0.00%] [ 0.00%] gtk_text_view_add_child_at_anchor [ 0.00%] [ 0.00%] pkgDepCache::MarkInstall(pkgCache::PkgIterator const&, bool, unsigned long, bool, bool) [ 0.00%] [ 0.00%] APT::Configuration::getLanguages[abi:cxx11](bool const&, bool const&, char const**) [ 0.00%] [ 0.00%] gtk_widget_hide [ 0.00%] [ 0.00%] Configuration::FindB(char const*, bool const&) const [ 0.00%] [ 0.00%] forkpty [ 0.00%] [ 0.00%] pkgArchiveCleaner::Go(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgCache&) [ 0.00%] [ 0.00%] gtk_text_buffer_set_text [ 0.00%] [ 0.00%] gtk_widget_realize [ 0.00%] [ 0.00%] pkgAcquireStatus::Pulse(pkgAcquire*) [ 0.00%] [ 0.00%] std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_mutate(unsigned long, unsigned long, char const*, unsigned long) [ 0.00%] [ 0.00%] pkgTagFile::Jump(pkgTagSection&, unsigned long long) [ 0.00%] [ 0.00%] g_strsplit [ 0.00%] [ 0.00%] nanosleep [ 0.00%] [ 0.00%] std::ostream::flush() [ 0.00%] [ 0.00%] SizeToStr[abi:cxx11](double) [ 0.00%] [ 0.00%] std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned long&, unsigned long) [ 0.00%] [ 0.00%] nl_langinfo_l [ 0.00%] [ 0.00%] g_object_thaw_notify [ 0.00%] [ 0.00%] In file /usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0.5000.3 [ 0.00%] [ 0.00%] gtk_widget_grab_focus [ 0.00%] [ 0.00%] g_type_check_instance_cast [ 0.00%] [ 0.00%] TimeToStr[abi:cxx11](unsigned long) [ 0.00%] [ 0.00%] gtk_label_set_markup [ 0.00%] [ 0.00%] nl_langinfo [ 0.00%] [ 0.00%] pkgTagSection::FindS[abi:cxx11](char const*) const [ 0.00%] [ 0.00%] - - kernel - - [ 0.00%] [ 0.00%] g_signal_connect_data [ 0.00%] [ 0.00%] g_signal_emit [ 0.00%] [ 0.00%] gtk_text_buffer_create_tag [ 0.00%] [ 0.00%] g_sequence_get_length [ 0.00%] [ 0.00%] gtk_list_store_new [ 0.00%] [ 0.00%] gtk_tree_selection_select_iter [ 0.00%] [ 0.00%] gtk_tree_store_new [ 0.00%] [ 0.00%] gtk_tree_store_set [ 0.00%] [ 0.00%] vte_terminal_set_font [ 0.00%] [ 0.00%] __close [ 0.00%] [ 0.00%] __pthread_rwlock_rdlock [ 0.00%] [ 0.00%] gtk_tree_view_scroll_to_cell [ 0.00%] [ 0.00%] g_object_notify_by_pspec [ 0.00%] [ 0.00%] g_strdup_printf [ 0.00%] [ 0.00%] gtk_tree_model_get_path [ 0.00%] [ 0.00%] gtk_tree_model_get_type [ 0.00%] [ 0.00%] In file /lib/aarch64-linux-gnu/ld-2.24.so [ 0.00%] [ 0.00%] gtk_window_set_transient_for [ 0.00%] [ 0.00%] g_initable_new [ 0.00%] [ 0.00%] __socket [ 0.00%] [ 0.00%] gtk_label_get_type [ 0.00%] [ 0.00%] __read_nocancel [ 0.00%] [ 0.00%] std::basic_filebuf<char, std::char_traits<char> >::open(char const*, std::_Ios_Openmode) [ 0.00%] [ 0.00%] gtk_progress_bar_pulse [ 0.00%] [ 0.00%] gtk_widget_queue_allocate [ 0.00%] [ 0.00%] g_main_context_iteration [ 0.00%] [ 0.00%] malloc [ 0.00%] [ 0.00%] OpProgress::OverallProgress(unsigned long long, unsigned long long, unsigned long long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) [ 0.00%] [ 0.00%] __libc_start_main [ 0.00%] [ 0.06%] g_signal_emit_valist [ 0.00%] [ 0.04%] In file /usr/lib/aarch64-linux-gnu/libgtk-3.so.0.2200.11 [ 0.00%] [ 0.03%] In file /usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0.5000.3 [ 0.00%] [ 0.02%] g_signal_emit_by_name [ 0.00%] [ 0.01%] g_signal_emit [ 0.00%] [ 0.01%] In file /usr/lib/aarch64-linux-gnu/libgdk-3.so.0.2200.11 [ 0.00%] [ 0.01%] gtk_main [ 0.00%] [ 0.01%] main [ 0.00%] [ 0.01%] g_main_context_dispatch [ 0.00%] [ 0.01%] __libc_start_main [ 0.00%] [ 0.01%] g_main_loop_run [ 0.00%] [ 0.01%] In file /lib/aarch64-linux-gnu/libglib-2.0.so.0.5000.3 [ 0.00%] [ 0.00%] g_cclosure_marshal_VOID__BOXEDv [ 0.00%] [ 0.00%] gtk_main_iteration [ 0.00%] [ 0.00%] gtk_main_do_event [ 0.00%] [ 0.00%] gtk_event_controller_handle_event [ 0.00%] [ 0.00%] ffi_call [ 0.00%] [ 0.00%] - - kernel - - [ 0.00%] [ 0.00%] ffi_call_SYSV [ 0.00%] [ 0.00%] g_cclosure_marshal_generic_va [ 0.00%] [ 0.00%] g_closure_invoke [ 0.00%] [ 0.00%] g_main_context_iteration [ 0.00%] [ 0.00%] In file /lib/aarch64-linux-gnu/libc-2.24.so [ 0.00%] [ 2.21%] [/usr/lib/xorg/Xorg] [ 0.00%] [ 2.04%] [SSL Cert #49] [ 0.00%] [ 0.92%] [/usr/lib/firefox-esr/firefox-esr] [ 0.00%] [ 0.80%] [sysprof] [ 0.00%] [ 0.46%] [lxpanel] [ 0.00%] [ 0.22%] [python2.7] [ 0.00%] [ 0.21%] [dpkg] [ 0.00%] [ 0.17%] - - kernel - - [ 0.00%] [ 0.16%] [pycompile] [ 0.00%] [ 0.15%] [http] [ 0.00%] [ 0.14%] [kworker/dying] [ 0.00%] [ 0.08%] [pcmanfm] [ 0.00%] [ 0.07%] [dpkg-query] [ 0.00%] [ 0.05%] [mmcqd/1] [ 0.00%] [ 0.04%] [openbox] [ 0.00%] [ 0.04%] [gdbus] [ 0.00%] [ 0.03%] [modprobe] [ 0.00%] [ 0.02%] [mc] [ 0.00%] [ 0.02%] [dpkg-deb] [ 0.00%] [ 0.02%] [apt-extracttemp] [ 0.00%] [ 0.01%] [urxvt] [ 0.00%] [ 0.01%] [/usr/sbin/haveged] [ 0.00%] [ 0.01%] [lsb_release] [ 0.00%] [ 0.01%] [ksoftirqd/0] [ 0.00%] [ 0.01%] [mandb] [ 0.00%] [ 0.01%] [kswapd0] [ 0.00%] [ 0.01%] [rm] [ 0.00%] [ 0.01%] [joe] [ 0.00%] [ 0.01%] [sh] [ 0.00%] [ 0.01%] [tar] [ 0.00%] [ 0.01%] [dpkg-split] [ 0.00%] [ 0.01%] [file] [ 0.00%] [ 0.01%] [jbd2/mmcblk1p1-] [ 0.00%] [ 0.01%] [avahi-daemon: running [rock64.local]] [ 0.00%] [ 0.00%] [/usr/lib/at-spi2-core/at-spi2-registryd] [ 0.00%] [ 0.00%] [/usr/bin/lxsession] [ 0.00%] [ 0.00%] [apropos] [ 0.00%] [ 0.00%] [man] [ 0.00%] [ 0.00%] [cfinteractive] [ 0.00%] [ 0.00%] [which] [ 0.00%] [ 0.00%] [/usr/sbin/ntpd] [ 0.00%] [ 0.00%] [/lib/systemd/systemd-journald] [ 0.00%] [ 0.00%] [/usr/bin/dbus-daemon] [ 0.00%] [ 0.00%] [bash] [ 0.00%] [ 0.00%] [/sbin/init] [ 0.00%] [ 0.00%] [sed] [ 0.00%] [ 0.00%] [dhclient-script] [ 0.00%] [ 0.00%] [/lib/systemd/systemd-logind] [ 0.00%] [ 0.00%] [/lib/systemd/systemd-udevd] [ 0.00%] [ 0.00%] [kworker/1:1] [ 0.00%] [ 0.00%] [hostname] [ 0.00%] [ 0.00%] [systemd-cgroups] [ 0.00%] [ 0.00%] [resolvconf] [ 0.00%] [ 0.00%] [/usr/sbin/cron] [ 0.00%] [ 0.00%] [debian-sa1] [ 0.00%] [ 0.00%] [run-parts] [ 0.00%] [ 0.00%] [python-dbus.pos] [ 0.00%] [ 0.00%] [/usr/bin/python3] [ 0.00%] [ 0.00%] [/usr/sbin/rsyslogd] [ 0.00%] [ 0.00%] [kworker/0:0] [ 0.00%] [ 0.00%] [sensible-editor] [ 0.00%] [ 0.00%] [pasystray] [ 0.00%] [ 0.00%] [pager] [ 0.00%] [ 0.00%] [python-crypto.p] [ 0.00%] [ 0.00%] [ksoftirqd/1] [ 0.00%] [ 0.00%] [avahi-autoipd] [ 0.00%] [ 0.00%] [cat] [ 0.00%] [ 0.00%] [python-xdg.post] [ 0.00%] [ 0.00%] [python-secretst] [ 0.00%] [ 0.00%] pam_sm_acct_mgmt [ 0.00%] [ 0.00%] [python-pyasn1.p] [ 0.00%] [ 0.00%] [python-keyrings] [ 0.00%] [ 0.00%] [python-gi.posti] [ 0.00%] [ 0.00%] [python-pip.post] [ 0.00%] [ 0.00%] [python-keyring.] [ 0.00%] [ 0.00%] [nm-applet] [ 0.00%] [ 0.00%] pam_sm_open_session [ 0.00%] [ 0.00%] gtk_module_init [ 0.00%] [ 0.00%] [python-idna.pos] [ 0.00%] [ 0.00%] [python-wheel.po] [ 0.00%] [ 0.00%] [python-pkg-reso] [ 0.00%] [ 0.00%] [python-enum34.p] [ 0.00%] [ 0.00%] [man-db.postinst] [ 0.00%] [ 0.00%] [cons.saver] [ 0.00%] [ 0.00%] [/sbin/dhclient] [ 0.00%] [ 0.00%] [locale] [ 0.00%] [ 0.00%] [python-six.post] [ 0.00%] [ 0.00%] [python-ipaddres] [ 0.00%] [ 0.00%] [python-setuptoo] [ 0.00%] [ 0.00%] [python-cryptogr] [ 0.00%] [ 0.00%] [/usr/lib/policykit-1/polkitd] [ 0.00%] [ 0.00%] In file /lib/aarch64-linux-gnu/security/pam_loginuid.so [ 0.00%] [ 0.00%] In file /lib/aarch64-linux-gnu/security/pam_env.so [ 0.00%] [ 0.00%] [/usr/lib/gvfs/gvfsd] [ 0.00%] [ 0.00%] [migration/1] [ 0.00%] [ 0.00%] [/usr/lib/aarch64-linux-gnu/sysprof/sysprofd] [ 0.00%] [ 0.00%] [migration/0] [ 0.00%] [ 0.00%] [/usr/lib/gvfs/gvfsd-trash] [ 0.00%] [ 0.00%] [kthreadd] [ 0.00%] [ 0.00%] In file /lib/aarch64-linux-gnu/libsystemd.so.0.17.0

I'm not sure if the line ends will straighten out when I post but it spent 90% of its time in

pkgTagFile::Jump(pkgTagSection&, unsigned long long)

whatever that does.  I did one search and installed what I found, then shut it down.  I'll look for that in the source.

textcap.txt

sysprof_ss.gif

Edited by ab1jx
Attaching a unix text file (0x0A line ends). And gif.

Share this post


Link to post
Share on other sites
(edited)

Fun having the extra horsepower (over a Pi).  Only 1 crash today, I'd just copied about 1 GB off to a hard drive in a USB adapter.  I suppose I could live with apt search.  Gimp 2.8 and UFRaw 0.22.

DSC_5586_ri_lev_cur_shp40_1200_wm.jpg

Edited by ab1jx
software versions

Share this post


Link to post
Share on other sites

What's the analysis of pkgTagFile::Jump with sysprof ?

 

I don't know where to look up the source code of this function. Valgrind might help you find the culprit too, also, if it's a memory/caching/branch-prediction related issue.

 

Well the source code is here : https://salsa.debian.org/apt-team/apt/blob/master/apt-pkg/tagfile.cc

But I don't see what would cause that much of a slowdown at first. That said the code is far from being easily readable.

Share this post


Link to post
Share on other sites

Synaptic has got problems on most (maybe all) Armbian distros. I`ve got it now on the BaboPC T3+, had it with the Tinker, ...
But as long as you don`t use the search function it works. You then have to browse thru everything to find what you want.
I use apt/apt-get install in Armbian.
There`s other software installers you can use too.

 

Share this post


Link to post
Share on other sites
6 hours ago, Myy said:

I don't know where to look up the source code of this function. Valgrind might help you find the culprit too, also, if it's a memory/caching/branch-prediction related issue.

 

Well the source code is here : https://salsa.debian.org/apt-team/apt/blob/master/apt-pkg/tagfile.cc

But I don't see what would cause that much of a slowdown at first. That said the code is far from being easily readable.

 

Especially hard to read if you don't use C++.  It took a little Googliing to figure out that jump in C++ is like jmp in assembly or goto in C or Basic.  I thought it was the actual name of a function.  I never found it, grepping and searching in editors.  pkgTagFile seems to be a type, like maybe a pointer to a stuct.  My guess is that it spends 90% of its time there just because it's called thousands of times.

 

Anyway the problem went away, Synaptic works fine now, perfectly usable.  Maybe some change got made that upgrades put into effect.  Maybe going through /etc/apt and killing any mention of compress in it, I basically used an arm64 Buster version as a reference.  The improvement wasn't immediate.  I also deleted the files in /var/cache/apt (not the archives) and let them get recreated.  Highly unlikely but I was also fiddling with some m4 macros trying to get something ancient (maybe Synaptic) to build.  A search in Synaptic now takes about 8 seconds.

 

Maybe Synaptic has been around since before compression could be used in apt cache files.  So it sort of works but it doesn't store the uncompressed version anywhere.  So a search means uncompressing hundreds or thousands of times.  The newest verson of Synaptic I could find was from 2012.  I consider it an essential tool though.

 

I haven't tried Valgrind on this machine but on my other arm64 machine it doesn't work.  Not all the instructions have been registered.  I got it to work on a Pi (in 32 bit mode) by building it from the latest stable source, not using the version in the debs.  Same Valgrind, same Pi, under arm64 Buster, it doesn't work.  The CPU in a Pi does a mode switch, almost like usb mode switches can change a device from being in mass storage mode to something else.  There's 1 line in config.txt that changes it, in lscpu the architecture switches to aarch64, then it runs different instructions.

synabt.png

Share this post


Link to post
Share on other sites

Are there other graphical package managers? I'm also used to synaptic, but the 20 minute wait between searches is infuriating. apt-get install is fine if you know the exact name of the package.

Share this post


Link to post
Share on other sites
21 hours ago, gregb49 said:

Are there other graphical package managers? I'm also used to synaptic, but the 20 minute wait between searches is infuriating. apt-get install is fine if you know the exact name of the package.

That problem was cured by not keeping the package info in compressed form as far as I'm concerned.  You have to change something in a config file then delete the lists and apt-get update again.  It's 10-20 times as fast now.

 

If you have to live without Synaptic try apt search.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
1 1