As you already know, Sisyphus is the package manager used in Redcore Linux. In it's essence Sisyphus is a simple wrapper around portage, gentoolkit, and portage-utils that provides an apt-get/yum-alike interface to these commands, to assist newcomer people transitioning from Debian/RedHat-based systems to Gentoo. However using Sisyphus was always slower compared to using portage directly, mainly due to extra operations Sisyphus is doing (syncing repos and databases, taking database snapshots pre/post package transactions etc). Until today!
In the last few days we've been working on improving the speed of Sisyphus. We wanted to minimize the time it spends syncing repos and databases and to make it run as fast as running portage directly. In order to achieve this goal we went back to the drawing board. We figured we can speed it up if we change the database format, the way it syncs the repos, and the way it takes database snapshots.
First, we improved the snapshot time, by refactoring most of the snapshot code. The numbers speek for themselves :
Before :
time ./take_db_snapshot
real 0m11.841s user 0m4.032s sys 0m8.438s
After:
time ./take_db_snapshot
real 0m0.046s user 0m0.011s sys 0m0.038s
That's about 225 times faster.
Second, we changed the database format, in order to improve database transaction speeds. With previous database format, any extra package you install in the system would make the database transactions a bit slower : more packages to track + longer snapshot time (see above) = slower database transactions speeds. The new database format is splitted into several much smaller tables, then joined together to achieve the same result, however, faster.
Third, we changed the way Sisyphus syncs the repos, and reduced the number of redundant syncs. It will now only sync the repositories when is absolutely required, unlike previous behaviour (sync no matter what).
All these changes combined gave Sisyphus a speed compared to portage. That means package operations will start and finish quicker, repository syncs will be triggered only when absolutely required, and database transactions will always be fast, regardless of number of packages you install in your system.
The new and improved Sisyphus is already available in the repositories, so all you have to do is upgrade your system :
sisyphus upgrade
Sisyphus will attempt to change it's database to the new format, however if you get an error as in this link , all you have to do is :
sisyphus rescue