2009-05-09

FireFox memory usage

Lately I tend to suspend my laptop to RAM and reboot/shut it down only when new kernel/dbus or something like that is available. As a side effect I also started closing some programs only when needed. One of these programs is FireFox... Everything was just fine (even nVidia fixed their driver and I see no crashes or screen locks now, yep, I know but I had no choice) but... after a few days the system started getting slower and slower and... I had to find out why!

It took a minute or two before I started htop (you don't use it! really? why?!?) and the problem was very obvious - no free memory - almost all RAM used by FireFox! I have and use the Cache Status Add-on for FireFox, but it helped veeery little. Restarting FireFox was the only thing that really helped. After the restart (hey FF devs, thanks for the 'Show my windows and tabs from last time' option, I love it) it took less than 200MiB RAM. Compared with more than 2 GiB before the restart it makes huuuge diference. The problem may be caused by memory leaks, memory leaks in add-ons, memory fragmentation (a small bit of memory still in use preventing FireFox from returning it to the system, a bit of browsing history for one). Since I can't fix any of these the conclusion is:

If you have FireFox running all the time, set your preferences to 'Show my windows and tabs from last time' and restart it daily... a bit annoying but it works.

2008-10-20

А живота си върви

Дълго време все не ми остава или време или желание да драсна нещо. Не смея да твърдя че ще се разпиша изведнъж, но поне мога да пробвам. Доста неща се случиха с мене изминалото време...

В професионален план правих глупости, смених си работата два пъти, но сегашната ми харесва много. Чукам на всички възможни дървета да продължава да е все така интересна, да са ми все така интересни и интелигентни колегите (не, не съм виждал такава голяма сбирщина от умен народ) и най-вече да успеем с проекта с който сме се захванали. За да не остане някой с грешно впечатление - проблеми и проблемчета има, но мисля че желанието и потенциала са по-големи. Ще падне доста работа, но си струва!

В личен план... а-ха, а-ха да е "на северния фронт нищо ново" но не би. Отново съм с София (е... човек и добре да жиевее... ама още не съм се оженил). Намерих си нова глупа за слушане - Еvanescence, ми като правят глупости Nightwish така е то. Започнал съм да проявявам странен интерес към поведението и анализа на себе си и околните. Току-що се върнах от една кръчма, щастлив дори само на 50 водка, но...

Най-интересното е че станах *КУМ*! Да ми се не надява човек справих се (или така ме лъжат поне, лъжете, лъжете!). Не си изтървах чашата даже като изнасях речта. Въпреки слуховете, че част от шампанското я напуснало, всичко е чиста клевета, аз не видях! Да са ни живи и здрави младоженците и тяхното малко птиченце, което чакаме скоро.

Да пусна малко клюки... младоженеца и младоженката почнаха с "заедно и в радост и тревога, успех и трудност" от самото начало. Булката, не изглеждаше толкова притеснена, каза едно да преди да е дошъл момента та станаха две, но младоженеца веднага застана зад нея - и той каза два пъти да! Булката мога да похваля за замаха с който се справи с един фотограф-"навлек", евала. Краденето на булката беше интересно, младоженеца ще е под чехъл според поверията (бе настъпен секунда след второто си "да")... Те свадбите били много хубаво нещо, препоръчвам го на всички от сърце!

Най-трудната част от това да си кум да си призная бе не измислянето на речта, а самото и изнасяне... зор майка, пот. Много полезен съвет се оказа "като застанете пред свадбарите... представете си ги голи". Аз не успях особено, но пак помага, пробвайте. Ако намеря оригинала на речта ще взема да го пусна тук да се по-похваля/изложа, току виж помогнало на някого.

Като стана дума за птиченца и младоженци... много народ се изпожени, много свадба, много нещо. Почвам да се притеснявам нещо... Или съм много претенциозен, или съм много грозен или пък нещо ми има ;-) Аз обаче нали съм си умничък - проверих. Повечето население на земята е женско (52% ми се върти по спомени). То това може да е и поради по-дългия им живот, но както е казал Марк Твен - "First get your facts; then you can distort them at your leisure." - съберете си фактите, след това можете да ги изопачавате по свое осмотрение. Вземайки в предвид последното - аз съм спокоен и продължавам да търся идеалната (а дано и тя мене търси).

С този хумористичен завършек "отивам" да си доработя малко и да си лягам, че току виж пак съм си легнал утре.

2005-07-12

Нов сървър - нов "късмет"

Човек и добре да живее, все някога му се налага да прави нов сървър...

Въпреки "силната ми любов" към последните рожби на Intel (P4, "добрия им хипертрединг", производителност/цена и т.н.) пак ми се налага такъв да инсталирам... живот...

Тъй като имаме 3 диска тръгнах да пускам RAID1 (/boot) и RAID5 (all the rest). Избора софтуерен райд си е донякъде финансов, а на вградените RAID контролери грам вяра им нямам (ако се скапе дъното ще се намери ли същото за да тръгне масива). От друга страна, софтуерния RAID до момента проблем не ми е правил и яде пренебрежимо малко от 1 GHz процесор, да не говорим за настоящия 3 GHz звяр. Писането по RAID5-цата забавя (пише се по 3-те диска), но четенето е почти два пъти по-бързо отколкото от един диск (чете се едновременно от 2 диска).

Първата ми работа беше да се запозная с дъното и да видя какви възможности имам (липсата на книжка доста затрудни тази част). Оказах се с два SATA контролера с по 4 канала. Първия бе Intel 82801FR/FRW, а втория SiI 3114. След малко въртележки установих че не само че IDE DVD записвачката си "пречи" с SATA-та на определен канал. Закачих всичките дискове на SiI контролера, направих си md0 и md1, инсталирах... и... ИЗНЕНАДААА... скоростта на дисковете поотделно (hdparm -t /dev/sd{a,b,c}) е около 55 MB/sec, а на md1 (RAID5) е ... 25-30MB/sec. Лошо Коларов, лошо! След още час проби разбрах че ако сложа само 2 на SiI контролера, а другия на Intel-ския - спи града - hdparm -t /dev/md1 ~= 110 MB/sec.

Следващото нещо което ми трябваше бе да накарам boot loader-а да работи и от 2-ри и от 3-ти диск. Особеността е, че BIOS назначава на 1-то устройство логически диск 0x80 (C: за DOS запознатите) и ако grub е настроен да се 'търси' на 2-ри диск, а той се е оказал 1-ви... просто няма как да стане. Трика с grub е простичък и по-точно е:

[root@host ~] grub
...
grub> map (hd0) (hd1) # map-ни диск 2 като диск 1
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd0)Segmentation fault
[root@host ~] _

Опаа... тук нещо. Повторението на опита не доведе до по-добър резултат. Как тогава anaconda-та успя да инсталира на първия дял? Хубав въпрос... заредих -UP ядрото (това което се ползва от anaconda по време на инсталация или rescue) и... хм... мина, мина и за (hd2) - /dev/sdc. CentOS имат система а-ла bugzilla, е, и 1 бъг в повече си имат вече.

Останалата част бе скука - проба какво става като махна произволен диск, проба какво става като го върна, като ги разбъркам... ми... работи, не можах да го скапя. mdmon разпраща поща при отпадане на диск, всичко е наред - да ми е честит... (ако на някой му трябват детайли - да пита, на сън го правя вече)

ПП: Относно P4 vs i86x64 - не смятам че "Intel са глупави процесори" или нещо такова, просто че *отдавна* не са по-добрия избор.

ПП2: Винаги е хубаво да се попрочете документацията. Hotswap-а мисля да не го пробвам, но не е лошо да знаеш че го има. Превключванията на режимите не се отразиха въобще на Linux-а, все му бе тая, намира си дисковете всякак :)

ПП3: А според този тест софтуерния RAID (не фалшивия хардуерен) си е и доста по-бърз от хардуерния, наздраве ;)


Полезни връзки: http://nas.darma.com/support/hcl.html, http://linuxmafia.com/faq/Hardware/sata.html.

2005-07-10

JS/UIX

"JS/UIX is an UN*X-like OS for standard web-browsers" - не е за вярване какви чудеса има по света. Това специално изпълни ls, vi и още няколко такива безупречно. Ако скоро започнат да се търсят и администратори за web browser да не се учуди някои :) - операционна система има!

Корекция: имало и други толкова луди идеи - robin. За повече - дискусията в slashdot.

2005-07-09

FireFox / Mozilla Search Plugins [Engines]

At last, this one got fixed. Finaly I will be able to add more search engines to FF without root privlieges to install them system wide.

Don't get me wrong, Mozilla and Firefox are the best available browsers (at least for now) but they have some annoying bugs. This one was opened at 2002-02-04 and fiexd at 2005-06-29 (still no official version with the fix), was not this way too long?

2005-07-03

udev

If someone told me this before I would not belive him, but look how simple it is (Kernel Trap: Linux: ndevfs - a "nano" devfs)

find /sys/block /sys/class -name dev -printf '%h\n' | while read d; do
n=${d//*\//}
i=$(<$d/dev)
mknod $n ${d:5:1} ${i/:/ }
done

... I really *have to* take a closer look at udev and hotplug ...


PS: Don't think I ever prefered devfs, I just can't belive how good the design is.

2005-06-26

Ethernet Bridge with Linux

В къщи си имаме 3 машини, като едната е с три мрежови карти (всъщност са четири и няма място за петата). Какво да правя, като Intel Pro 100 са ми любими, RealTec не са лоши, 3COM-а е стара като света, бавна но стабилна като скала... е как да се разделя с тях, а? Моята машина е жива 99% от времето (освен като спре тока) а двете други машини ползват и Windows. При тази ситуация закупуването на switch/hub ми се струва разточителство - Ethernet Bridge е достатъчно добро решение.


Как става това с Fedora/RH/CentOS? Ами... лесно. Ако имаме 2 интерфейса, eth1 и eth2, за включване в br0 то конфигурацията се записва в /etc/sysconfig/network-scripts/ifcfg-br0 и изглежда така:

# Please read /usr/share/doc/initscripts-*/sysconfig.txt
# for the documentation of these parameters.
DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.0.254
NETMASK=255.255.255.0
NOZEROCONF=YES # you might need this!
DELAY=0 # set bridge forward delay

Конфигурациите на eth1 и eth2 се променят да нямат IP адреси (дори да имат, пак работи) и да се укаже към кой bridge принадлежат, примерно за eth1:


DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
BRIDGE=br0 # This is the important part ;)

... и ако всичко е наред, след 'service network restart' вече имате работещ интерфейс br0:

[root@fc ~]# ip addr list dev eth1; ip addr list dev eth2; ip addr list dev br0; brctl show
3: eth1: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:d3:b7:18:aa:7a brd ff:ff:ff:ff:ff:ff
4: eth2: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:ba:18:ab:fc brd ff:ff:ff:ff:ff:ff
5: br0: mtu 1500 qdisc noqueue
link/ether 00:d1:b7:26:82:02 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.1/24 brd 192.168.0.255 scope global br0
bridge name bridge id STP enabled interfaces
br0 8000.00d1b7268202 no eth1
eth2

2005-06-23

Петрич

Днес съм в Петрич. Хубава природа, приятно време... и доста работа. Не се оплаквам, много, но ще се наложи да се занимавам и с Windows-и и... не съм особено вдъхновен. Knoppix is my best friend в такива случаи.

Гледайки природата наоколо все повече си мисля, че трябва да взема да послушам колегите и да си вдигна мързеливия задник с тях малко из планината. Компютрите са хубаво нещо, но май аз лично попрекалявам с тях :)

ПП: Не ме разбирайте погрешно, обичам разходките из планината, но рядко/трудно се оказвам на такава...

2005-06-22

j2me_wtk

Днес се измъчих с таз джаджа. java-1.5.0-sun беше лесно - nosrc.rpm от http://www.jpackage.org/, малко лутане из сайта на sun, rpmbuild --rebuild и запя (хубаво нещо са alternatives ot chkconfig-а). За j2me_wtk обаче пакет няма. Намерих само един стар спецификационен файл в листата на jpackage. В новата версия (2.2) се оказа че има preverify1.0 и preverify1.1 в добавка към preverify, е, може и да съм изтървал някое друго допълнение. Получи се следния spec файл:

# based on https://www.zarb.org/pipermail/jpackage-discuss/2005-February/007127.html
Name: wtk2
Version: 2.2.01
Release: 0.0.jpp.0

Summary: Sun J2ME Wireless Toolkit
Group: Development/Java

License: Sun Microsystems Inc. Binary Code Agreement
URL: http://java.sun.com/developer/releases/j2mewtoolkit/
#http://java.sun.com/products/sjwtoolkit/download-2_2.html

#Source0: j2me_wireless_toolkit-1_0_4_01-bin-linuxi386.bin
Source0: j2me_wireless_toolkit-2_2-linux-i386.bin
NoSource: 0

BuildArch: i586
BuildRoot: %{_tmppath}/%{name}-%{version}-root

#BuildRequires: jpackage-utils >= 1.5
BuildRequires: jpackage-utils >= 1.6.3
#Requires: java-devel >= 1.3

%description
The Java 2 Platform, Micro Edition (J2ME) Wireless Toolkit is a
state-of-the-art toolbox for developing wireless applications that are based on
J2ME's Connected Limited Device Configuration (CLDC) and Mobile Information
Device Profile (MIDP), and designed to run on cell phones, mainstream personal
digital assistants, and other small mobile devices. The toolkit includes the
emulation environments, performance optimization and tuning features,
documentation, and examples that developers need to bring efficient and
successful wireless applications to market quickly.

%package demos
Summary: MIDP demos
Group: Development/Demos

%description demos
A collection of MIDP demos

%package javadoc
Summary: Wireless Toolkit javadoc
Group: Development/Documentation

%description javadoc
API documentation for the Wireless Toolkit

%prep
rm -fr %{name}-%{version}
mkdir %{name}-%{version}
cd %{name}-%{version}

# Looking at the shell script at the begining of the binary...
dd if=%{SOURCE0} of=j2me-linux.zip bs=1k skip=20
unzip -q j2me-linux.zip
chmod -R go=u-w *
chmod -R u+w *

%build
# nothing
# TODO: Would be good to remove some +x flags here (from jars for example)

%install
[ $RPM_BUILD_ROOT != "/" ] && rm -fr $RPM_BUILD_ROOT
cd %{name}-%{version}

mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}
cp -a * $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}

mkdir -p $RPM_BUILD_ROOT%{_javadocdir}
mv $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/docs/api $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}

mkdir -p $RPM_BUILD_ROOT%{_docdir}
mv $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/docs $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
mv $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/*.html $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
#mv $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/*.css $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}

rm $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/*.zip

%clean
rm -fr %{name}-%{version}
[ $RPM_BUILD_ROOT != "/" ] && rm -fr $RPM_BUILD_ROOT

%post
# A bit of alternative magic :)
alternatives \
--install %{_datadir}/wtk wtk %{_datadir}/%{name}-%{version} $(echo %{version} | sed -e 's/\.//g') \
--slave %{_bindir}/defaultdevice defaultdevice %{_datadir}/%{name}-%{version}/bin/defaultdevice \
--slave %{_bindir}/emulator emulator %{_datadir}/%{name}-%{version}/bin/emulator \
--slave %{_bindir}/ktoolbar ktoolbar %{_datadir}/%{name}-%{version}/bin/ktoolbar \
--slave %{_bindir}/prefs prefs %{_datadir}/%{name}-%{version}/bin/prefs \
--slave %{_bindir}/preverify preverify %{_datadir}/%{name}-%{version}/bin/preverify \
--slave %{_bindir}/runmidlet runmidlet %{_datadir}/%{name}-%{version}/bin/runmidlet \
--slave %{_bindir}/utils utils %{_datadir}/%{name}-%{version}/bin/utils \
--slave %{_bindir}/zayit zayit %{_datadir}/%{name}-%{version}/bin/zayit \

%preun
alternatives --remove wtk %{_datadir}/%{name}-%{version}

%files
%defattr (-,root,root)
%doc %{_docdir}/%{name}-%{version}
%{_datadir}/%{name}-%{version}/appdb
%{_datadir}/%{name}-%{version}/bin
%{_datadir}/%{name}-%{version}/lib
%{_datadir}/%{name}-%{version}/sessions
%{_datadir}/%{name}-%{version}/wtklib

%files demos
%defattr (-,root,root)
%{_datadir}/%{name}-%{version}/apps

%files javadoc
%defattr (-,root,root)
%{_javadocdir}/%{name}-%{version}

%changelog
* Wed Jun 22 2005 Doncho Gunchev <gunchev at gmail.com> 2.2.01-0.0.jpp.0
- update the version
- minor fix with 'no more .css' at root archive dir
- add preverify10 and preverify11 to alternatives

* Wed Feb 16 2005 Lyle Dietz <dietzla at tsgpacific.com.au> 1.0.4.01-0.0.jpp.0
- Initial RPM version

Това ми е първия java пакет (в който съм си врял носа) и сигурно е голяма каша, но работи.

SUN доста ме разочароваха... как може ktoolbar да се опитва да си записва настройките в директорията в която му се намира изпълнимия файл, или да се опитва там да прави някакви .lock файлове за com портове до колкото разбрах? Те и от mozilla не са много на ти с UNIX-а /custom search engines/, обаче тези хич не са... Ако ми остане време, или по-скоро ми се наложи да го направя, ще взема да разгледам не мога ли някак да го поизлъжа това чудо.

ПП: Примерен мидлет - http://www.devx.com/tips/Tip/20098.

2005-06-21

kkbswitch

В lug-bg един ден научих за kkbswitch и от тогава ми е любимо приложение за превключване на клавиатурната подредба под X (KDE, XFCE4, Gnome). С преминаването на Fedora Core 4 /online, с yum upgrade ;-)/ се наложи да го прекомпилирам. Приятната изненада бе, че rpmbuild -ta kkbswitch*.tar.gz върши чудесна работа. В xorg.conf аз ползвам следнте редове:

...
Section "InputDevice"
...
Option "XkbLayout" "us,bg"
Option "XkbVariant" ",phonetic"
Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll"
EndSection

... и се чуствам щастлив превключвайки си с Alt-Shift, както в "доброто старо време", при това с културна индикация в лентата (tray, превода нещо ми куца, срамота!)...

2005-06-18

Нов blog, нова проба :)

По някога човек неочаквано намира полезни неща из Интернет... примерно:


rpm-openpgp-1.html
rpm-openpgp-2.html
rpm-openpgp-3.html
Какво трябва да знаем за RPM

благодарение а Сава Чанков в lug-bg. Като добавка - Maximum RPM.