I haven’t blogged since some time. We have been working hard to get package management stack changes in so we can have them in one of the next alphas. I wanted to make a small pause and write about it because communication is (sometimes) as important as coding ;-).
See it yourself:
History
You know how was the package management stack on 10.1. On 10.3 we reached a point where we were fast enough, but with really bad performances in some cases, especially cold starts, and big lists of repositories, which is usually the usecase where the people complaining about speed are: factory users. Some of this bad performance was caused by design mistakes (like not using 1 db per repository), and others because sqlite horrible performance after fragmentation occurs.
This started sometime last year, when Michael Schröder started to show some people a new solver which was much faster than current libzypp solver. At the same time, he designed some memory and cpu efficient structures and file formats to deal with the huge amounts of metadata. The solver operated later over this optimized pool.
One of the features of the solver is its simplicity. Current libzypp operates over a dependency problem at the resolvable level while the sat solver converts the pool into a set of rules and then operates the problem as a boolean satisfiability problem, which makes it codebase concentrate only on this, making it much smaller and simpler. The error messages on conflicts are supposed to be more human friendly too.
The Road
During the YaST workshop times, coolo started to try the libzypp testsuite with the solver, by creating tools to use the existing testcases with it, and making sure it could serve as our solver.
Once coolo came and said, “ok, all testcases pass”. So we met and agreed on some milestones to see the feasibility of integration with libzypp. One of the milestones was to use the new solver without replacing all the infrastructure libzypp had. That is, taking libzypp pool, converting the transactions into rules, solve, convert them back. Stefan Schubert did a great work in this area, and actually if you are using factory you are already using the sat solver.
To familiarize myself with the solver at that time, I ported it to build with cmake and implemented swig bindings (focusing on ruby ones), which later Klaus started to enhance and experiment new concepts on top of them.
There was one part the sat solver did not take into account and it was the huge amount of non-solvable data you need to have cached. It is easy to claim to be fast if you ignore 95% of the data, so Michael Matz started to enhance the sat library by designing a special attribute store for repository metadata. The final concept and implementation was submited some weeks ago and it is really fast.
During January, Michael Andres got rid of thousands of lines of code in libzypp, keeping the nice APIs but trying to build everything on top of the sat library. I ported some classes like RepoManager, and later this week the final pieces were connected when Michael connected our Pool class with the sat pool which allows to “see” the packages “world” to applications. I ported zypper and YaST package bindings and Michael Matz told us yesterday he actually installed packages using zypper.
The whole stack is now designed as unix tools, so this will allow our repositories to ship solv files, which can in turn be downloaded by libzypp. So you don’t need to generate a cache locally if the solv file is already available on the server. This is not implemented yet.
There also other open issues. We don’t parse translations and only the suse media parser stores attributes like descriptions. Patches and packages are not installed (but this has also another reason I will talk about it later). The package management user interface won’t compile (I haven’t tried) yet.
This new level of performance would allow us to bring package management on openSUSE not to the smart or yum level, but a complete new generation ahead. And this will open the door for smooth integration with CIM and PackageKit and will bring fresh air during the road to the next generation of SLES and SLED.
If you are an openSUSE contributor, we do need help with testing, and there are lot of “mechanical” jobs to do which don’t require much experience with the platform (but compiling). If you want to see this in 11.0 and can contribute, please contact us .
-
Will this run in 10.3?
-
Great work!!
this speed issue has been a paine and I’m very happy that you have improved it. Is this in alfa2 or will it be a part of alfa3?
Congratulations for a work well done.
-
In the past (open)SUSE’s slowness of its packet manager has always been a showstopper for me ;(
it looks like this has changed to a big degree !
time seems ready for a testride of openSUSE 11
please also improve mirror management for the repositories (if there’s anything to improve, I haven’t used / tested openSUSE for a long time)
thanks,
you guys rock !
-
Pingback from New Starter of Linux - TechEnclave on March 2, 2008 at 2:30 am
-
Pingback from Sad Ubuntu Story - Page 4 - TechEnclave on March 22, 2008 at 10:47 pm
-
It is sooooooooooooo fast. Very nice done. It’s….just amazing. I am using an 8 years old computer and before Alpha3 I really have to think about what packages I wanted to install before clicking on “Finish’ cause starting yast/zypper took so long. Now I just do it while I am working cause it’s done in 20 second anyway (10 repo’s).
SUPERRR!
ps. I have seen the new artwork (proposals) on the designwiki-page and the new installer-theme and it blasted me away. A new graphical tool by beineri(?) to install some usefull software and KDE4 runs very nice allready. This release is a HUGE step forward for openSUSE!!!
-
will the new zypper be available for opensuse 10.3 as well?
-
I respect the hard work that has gone into improving OpenSuSE’s package management speeds. However, I wonder how much of this is reinventing the wheel? The dpkg / apt-get based package management system is quite fast, well supported, and resolves dependencies with a high rate of success.
If the OpenSuSE team is at the point of rewriting zypper and removing “thousands of lines of code”, would this have not been a great opportunity to make the switch away from RPM? Perhaps I do not completely understand zypper and am comparing apples and oranges?
Red Hat (http://www.press.redhat.com/2008/04/16/whats-going-on-with-red-hat-desktop-systems-an-update/) suggest that it will not be continuing a consumer based desktop, so that leaves OpenSuSE (and categorically Novell SLED / SLES) as the last big supporter of RPM. Seems like a great time to consolidate packaging as Ian Murdock suggests…
-
I’ve been running 11 beta 2, and I have to say I am impressed with the huge increase in speed
-
Pingback from Instalasi Opensuse « Imam91’s Blog on June 10, 2009 at 3:20 am









27 comments
Comments feed for this article
Trackback link: http://duncan.mac-vicar.com/blog/archives/296/trackback