How we use our power
I had a side project the last two weeks: Make the build service more fun to use.
No matter how much fun you have creating packages, if they don’t build, there is little point in using a Service that has Build in its name, no? So one of the major goals of the service is actually to help those that want to build packages as good as possible. But there is a problem:
Let me quote from the landing page of build.opensuse.org: “The openSUSE Build Service hosts 16,414 projects, with 107,691 packages, in 26,259 repositories and is used by 25,967 confirmed users.”. That are quite some high numbers – especially in the relation to the ~25 servers we have for actually building.
If you look at the build statistics of the last month (and this is just i586, x86_64 has around the same), you notice that there is not much purple in the “Busy workers / Idle workers” graphic:

Every 2nd weekend or so we have some pause where the servers actually idle around, the rest of the time they are usually under full load and it’s not exceptional that we have over 20,000 build jobs for said 25 servers at the same time. So if Sue comes wants to build her packages at that time, she competes with quite some other packages and she gets frustrated to still see “scheduled” when she goes away. So we use some algorithms in the so called dispatcher to distribute the power to the right packages.
Over years of its existence the dispatcher used the algorithm I would dub “Randomness with exceptions” – it would if the job’s filename matches a regexp and if so, preferred it, otherwise picked a random job. Such algorithms create some fairness if you have 28.000 users all active at the same time, because there is usually not a really good balance between those.
But with 2.0 this changed: we got load and priorities. A script of mine parses the logs of download.opensuse.org and counts how many users are for the repositories. From that I calculate priorities, so that repositories of interest to people get more build power than others. E.g. KDE:Release:45 for 11.3 is downloaded 65 more often than for 11.1, so the 11.3 packages should see more attention. For that the build service calculates how many workers were busy for the repositories and then allows a factor to lower that load while picking the next repository to build for. This is much more complex than “pick a random one”, but it lead to faster return times for those projects that see actual downloads (and new projects as they have no load registered). To give some fun for those actually working on their packages, we also lower the registered load if we see commits.
But there was one problem left: with so many projects registered you also have quite some that aren’t interesting at all. They are not downloaded and very often not even their maintainers care, e.g. for some testing subproject they created in 2009 and then forgot about it. But those repositories build against the often changing openSUSE:Factory and see rebuilds because of that. Those repositories had a very low load because they have few packages, so they are often preferred over projects that have a lot of packages.
To free up more power to recent changes, we now experimented with various ways. It turned out to be useful to look at the relation between since last source change in the project and time since the jobs are “scheduled”. From this we calculate a staleness penalty – when the job is freshly scheduled, it’s basically one chance for a worker for 2 months since the last commit to the project. But this chance rises quickly, the penalty gets smaller the longer the job is in scheduled. Even those projects that have no source commits are valid “customers” and deserve to be rebuild against the latest gcc from openSUSE:Factory.
So what does this mean to you as user of the OpenSUSE Build Service?
- Don’t add repositories unless you really plan to use it. I know that clicking the checkbox to also add all SLE versions is easily done, but remember this is build power and disk space on various mirrors you’ll be using
- If you really care for your project, it’s a good idea to fix build failures from time to time. You’ll get more build power in return
- If you plan to do a larger update of some package in your project and want to test the resulting packages building against it, it’s a good idea to disable all other repositories while you do so. The fewer build jobs you create, the lower is your load, the higher are your chances to get more build power
- Make your repository popular by telling the world about it. More users means more build power
- And last but not least: don’t get frustrated, remember there are almost 26000 other users
Amazon Affiliate Revenue
Since late July Banshee has had AmazonMP3 store integration, earning a 10% affiliate fee. We're proud to send all of that revenue to the GNOME Foundation. Here is the cumulative revenue breakdown per store:
| Amazon.com | $1185 |
| Amazon.de | €315 |
| Amazon.co.uk | £80 |
| Amazon.co.jp | ¥28 |
| Amazon.fr | €70 |
That totals to about $1800 USD, all going directly to the GNOME Foundation! This accounts for about half of what GNOME has earned from Amazon in the last six months.
Our revenue has increased every month, too; in December we're on track for another record month! Find out more about Banshee...
Promovendo o uso do IPv6 no Brasil e no Mundo.
Testes IPv6
Quer saber se seu computador já opera com IPv6? Utilize este teste: http://test-ipv6.com.br ou http://www.wireshark.org/tools/v46status.html.
Quer saber se um site na internet já está usando o IPv6? Utilize este teste: http://validador.ipv6.br.
http://www.whoishostingthis.
O conteúdo desse artigo pode ser modificado ou atualizado, por isso, visite essa página constantemente e mantenha-se atualizado.
Fed up of FUD against Novell, SUSE & openSUSE
Παρουσίαση του openSUSE Project
Η Ελληνική Κοινότητα openSUSE σε συνεργασία με την Ένωση Ελλήνων Χρηστών & Φίλων Ελεύθερου Λογισμικού / Λογισμικού Ανοικτού Κώδικα σας προσκαλούν στην παρουσίαση του openSUSE Project το Σάββατο 18 Δεκεμβρίου και ώρα 5 στο Εργαστήριο Η/Υ Οικονομικών Επιστημών, πύργος Γ-Δ στον 2ο όροφο στην αίθουσα 213 Στο Πανεπιστήμιο Μακεδονίας.
Η παρουσίαση θα χωριστεί σε 4 μέρη:
-Τι είναι το openSUSE Project
-Παρουσίαση της Ελληνικής κοινότητας openSUSE και πως να συμμετάσχετε σε αυτή.
-Παρουσίαση του επαναστατικού OBS (Building System)
-Εγκατάσταση της διανομής openSUSE
Ελάτε να γνωρίσετε από κοντά το Project και την Ελληνική κοινότητα.
Disappointment at the Linux Foundation and MeeGo Project
Введение в использование LVM
- pv* - для работы с физическими томами;
- vg* - для работы с группами томов;
- lv* - для работы с логическими томами.
- ключ -L указывает размер создаваемого тома. Поддерживаются суффиксы K (килобайты), M (мегабайты), G (гигабайты).
- ключ -n указывает название для тома (samba в данном случае)
- последний аргумент fileserver указывает группу томов, в которой мы создаем логический том (теоретически, групп может быть несколько).
Smeegol Status - 08Dec10
LibreOffice 3.3 rc1 available for openSUSE
I’m happy to announce LibreOffice 3.3 rc1 packages for openSUSE. They are available in the Build Service LibreOffice:Unstable project. They are based on the libreoffice-3.3.0.1 release. Please, look for more details about the openSUSE LibreOffice build on the wiki page.
The packages are based on release candidate sources but they have not passed full QA round yet and might include even serious bugs. Therefore they are not intended for data-critical usage. A good practice is to archive any important data before an use, …
As usual, we kindly ask any interested beta testers to try the package and report bugs against the product LibreOffice .
Known bugs
- unopkg crashes (bug #655912)
- shell wrappers are still ooffice, oowriter, …; we need to discuss the new wrapper names with other distros first
- some packages were not renamed, .e.g. OpenOffice_org-thesaurus, …; they are not built from the main LibO sources; we will do it later
- user configuration is stored into ~/.libreoffice/3-suse; we might try to share the directory ~/.libreoffice/3 after we fix the incompatible BerkleyDB; Well, we are not sure if it is enough and it is a good idea, so it will need some more testing
- GNOME quickstarter is started by default; you might disable it in Tools/Options/OpenOffice.org/Memory/Enable systray Quickstarter
- SLED10 build is not available; need more love
More known bugs
Other information and plans:
The package are based on LibreOffice-3.3-rc1 sources. There are still some openSUSE-specific bugs that needed to be fixed. I hope that they do not break the base function, though.
We expect that rc2 will be needed within next two weeks. We will try to fix more openSUSE-specific bugs in the meantime…
Краткое введение в программирование на Bash - часть II
x=8 # присваиваем x значение 8
y=4 # присваиваем y значение 4
z=$(($x + $y))
echo «Сумма $x и $y равна $z»
Действие | Оператор |
Сложение |
+ |
Вычитание |
- |
Умножение |
* |
Целочисленное деление |
/ |
Остаток от деления |
% |
x=5 # устанавливаем x равным 5
y=3 # устанавливаем y равным 3
add=$(($x + $y))
mul=$(($x * $y))
# в переменную div сохраняем результат деления x на y
mod=$(($x % $y))
echo «Сумма равна: $add»
echo «Разность равна $sub»
echo «Произведение равно $mul»
echo «Результат деления $div»
echo «Остаток от деления $mod»
# спросить у пользователя его имя и поздороваться с ним
echo -n “Введите свое имя: ”
read user_name
echo “Привет $user_name!”
# спрашиваем имя пользователя и выводим приветствие
echo -n «Введите имя: »
read user_name
if [ -z «$user_name» ]; then
echo «Вы не сказали мне свое имя!»
exit
fi
echo «Привет $user_name!»
# функция hello() печатает сообщение
{
echo «Вы находитесь в функции hello()»
}
hello
{
echo «Вы находитесь в функции hello()»
}
echo «Вызов функции hello() …»
hello
# функция hello() просто выводит сообщение
hello()
{
echo «Вы находитесь в функции привет ()»
}
Вызов функции привет () ...
./hello.sh: hello: command not found
Как видите, мы получили сообщение об ошибке. Поэтому стоит всегда размещать ваши функции в начале кода или, по крайней мере, непосредственно перед вызовом функции. Еще один пример использования функции:
# admin.sh – инструмент для администратора
# функция new_user () создает новую учетную запись пользователя
new_user()
{
echo «Подготовка к созданию новых пользователей ...»
sleep 2
adduser
}
echo «2. Выход»
read choice
case $choice in
1) new_user # вызов функции new_user()
;;
*) exit
;;
esac
# использование команды trap
sorry()
{
echo «Извини меня, Дэйв. Я не могу этого сделать»
sleep 3
}
for i in 10 9 8 7 6 5 4 3 2 1; do
echo «Осталось $i секунд до уничтожения...»
sleep 1
done
echo «Запуск программы уничтожения!»
trap sorry INT
# отключение ловушки
trap – INT
# ничего не делать при получении сигнала SIGINT
trap ” INT
x=5
y=10
if [ "$x" -eq 5 ] && [ "$y" -eq 10 ]; then
echo «Оба условия верны»
else
echo «Условия не верны»
fi
x=3
y=2
if [ "$x" -eq 5 ] || [ "$y" -eq 2 ]; then
echo «Одно из условий истинно»
else
echo «Ни одно из условий не является истинным»
fi
x=5
y=10
if [ "$x" -eq 5 ]; then
if [ "$y" -eq 10 ]; then
echo «Оба условия верны»
else
echo «Оба условия неверны»
fi
fi
# скрипт, печатающий свои аргументы
# проверяем, переданы ли скрипту аргументы:
if [ "$#" -ne 1 ]; then
echo «корректный запуск программы: $0 <параметр>»
fi
$ ls
hello
$ touch hello.$$
$ ls
hello hello.689
Примерно так и будет выглядеть имя вашего временного файла.
$
# ищем пользователя vasya в /etc/passwd,
# смотрим код завершения и действуем по обстоятельствам:
if [ "$? -eq 0 ]; then
echo «Пользователь vasya найден»
exit
else
echo «Пользователь vasya не найден»
fi
ls: /root: Permission denied
$ ls /root 2> /dev/null
$
if [ -f "/etc/passwd" ]; then
echo «Файл passwd существует»
exit 0
else
echo «Нет такого файла»
exit 1
fi
