Showing posts sorted by date for query memory. Sort by relevance Show all posts
Showing posts sorted by date for query memory. Sort by relevance Show all posts

Typing an Ellipsis or other Special Characters

Sometimes I have a need to type special characters. Some of them aren't obviously represented on my keyboard. Indeed, no physical keyboard can realistically show all Unicode characters.

One of my often used special characters is the ellipsis (…) which is Unicode character U+2026.

sed quick reference

Continuing on this idea of quick references[1] to aid my memory, the next one is
sed: stream editor for filtering and transforming text

My favourite busybox toolkit contains sed too.

Gentoo Portage emerge TMPDIR extending zram btrfs volumes

You can probably see I was heading this way. This post follows a series, and you should read those posts again if you haven't done so recently. This blog post follows my journey through btrfs to gentoo to portage to tmpfs to zram back to btrfs again to finish a circle.

Discovering zram and replacing all tmpfs

I have just discovered zram[2] :) woohoo... and what a thing that is!

I was so sold on tmpfs, that I used it for everything I possibly could. Since discovering zram, I am using tmpfs for nothing. All my tmpfs needs are met by zram much more efficiently.

gentoo emerge in tmpfs

One of my gentoo pain points has been the extremely (long and) resource intensive emerge for large packages. However, it is expected and many have come up with their own tricks to make this more efficient.

For me, this has been a gradual step-by-step approach, as I encountered these issues and discovered more about Gentoo.

I stated out with my portage configured as default -- compiling everything on the same disk/filesystem mount on my rotating (not ssd) disk. Any emerge affected everything else, which was too invasive to ignore.

I want emerge to run gently in the background, not affecting any foreground tasks.

This sound device does not have any controls

I have no sound, on my recent gentoo install.

LXQT Mixer wouldn't open. I don't even get any error/warning messages. This is not good.

So I try alsamixer.

$ alsamixer
...
This sound device does not have any controls.

gentoo install x86 btrfs

this as a quick start guide to the much longer and more comprehensive gentoo handbook. but please understand what i have done, and not blindly copy. you should definitely read the gentoo install handbook a few times before even attempting an install.

bios acpi dsdt

bios: basic input/output system
acpi: advanced configuration power interface
dsdt: differentiated system description table
wheezy32: debian wheezy 32bit
arch32: arch 32bit

toshiba bios seem to be one of the most notorious and worst broken. do not choose toshiba for anything but windows, and even with that be careful. dodgy bios implementations are like broken foundations to build your home, if you want to live there yourself!

identify

so how do you identify, if your bios is broken/buggy? check kernel logs:
$ dmesg -l err
toshiba_acpi: Error reading LCD brightness
indicates direction of problems. this error points towards a buggy implementation of acpi by toshiba.

$ dmesg | grep DSDT
ACPI: DSDT 0x00000000B7CEF000 095BA (v01 TOSINV TOSINV00 00000001 MSFT 01000013)
TOSHIBA Satellite detected - force copy of DSDT to local memory
ACPI: Forced DSDT copy: length 0x095BA copied locally, original unmapped
ACPI: EC: Look up EC in DSDT
indicates that bios data is (used as original, forced) not overidden.
msft indicates that toshiba bios is specific to microsoft, particular to a windows version.
poor strategy, unless they were paid-off by microsoft.

confirm

how do you confirm whether bios provided data is usable? decompile & recompile.
a successful recompile, no errors/warnings indicates a good bios! and this has nothing to do with any operating system.

we need iasl, for this purpose.

$ apt-cache show iasl
Description: Intel ASL compiler/decompiler
 iASL compiles ASL (ACPI Source Language) into AML (ACPI Machine
 Language). This AML is suitable for inclusion as a DSDT in system
 firmware. It also can disassemble AML, for debugging purposes.
Homepage: http://acpica.org
# apt-get install iasl
$ iasl -h

$ cd /tmp
$ sudo cat /sys/firmware/acpi/tables/DSDT >dsdt.dat
$ iasl -d dsdt.dat
$ iasl -tc dsdt.dsl
the first command reads the dsdt data. do it as root.
the second command decompiles this .dat into .dsl
the third command attempts to compile, thereby generating the errors/warnings we are looking for.

i see this on wheezy32
$ iasl -tc dsdt.dsl
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20100528 [Jul  2 2010]
Copyright (c) 2000 - 2010 Intel Corporation
Supports ACPI Specification Revision 4.0a

dsdt.dsl  3401:                     0x00000000,         // Length
Error    4122 -                              ^ Invalid combination of Length and Min/Max fixed flags

dsdt.dsl  3408:                     0x00000000,         // Length
Error    4122 -                              ^ Invalid combination of Length and Min/Max fixed flags

dsdt.dsl  7148:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7165:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7214:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7231:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7275:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7489:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7506:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7523:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7540:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  7557:                         Name (_PLD, Buffer (0x10)
Error    4080 -          Invalid object type for reserved name ^  (found BUFFER, requires Package)

dsdt.dsl  8873:                     Method (_GTM, 0, NotSerialized)
Warning  1088 -                                ^ Not all control paths return a value (_GTM)

dsdt.dsl  8873:                     Method (_GTM, 0, NotSerialized)
Warning  1081 -                                ^ Reserved method must return a value (Buffer required for _GTM)

dsdt.dsl  9033:                         Method (_GTF, 0, NotSerialized)
Warning  1088 -                                    ^ Not all control paths return a value (_GTF)

dsdt.dsl  9033:                         Method (_GTF, 0, NotSerialized)
Warning  1081 -                                    ^ Reserved method must return a value (Buffer required for _GTF)

dsdt.dsl  9101:                         Method (_GTF, 0, NotSerialized)
Warning  1088 -                                    ^ Not all control paths return a value (_GTF)

dsdt.dsl  9101:                         Method (_GTF, 0, NotSerialized)
Warning  1081 -                                    ^ Reserved method must return a value (Buffer required for _GTF)

dsdt.dsl  9174:                     Method (_GTM, 0, NotSerialized)
Warning  1088 -                                ^ Not all control paths return a value (_GTM)

dsdt.dsl  9174:                     Method (_GTM, 0, NotSerialized)
Warning  1081 -                                ^ Reserved method must return a value (Buffer required for _GTM)

dsdt.dsl  9334:                         Method (_GTF, 0, NotSerialized)
Warning  1088 -                                    ^ Not all control paths return a value (_GTF)

dsdt.dsl  9334:                         Method (_GTF, 0, NotSerialized)
Warning  1081 -                                    ^ Reserved method must return a value (Buffer required for _GTF)

dsdt.dsl  9402:                         Method (_GTF, 0, NotSerialized)
Warning  1088 -                                    ^ Not all control paths return a value (_GTF)

dsdt.dsl  9402:                         Method (_GTF, 0, NotSerialized)
Warning  1081 -                                    ^ Reserved method must return a value (Buffer required for _GTF)

dsdt.dsl  9507:                     Method (_GTM, 0, NotSerialized)
Warning  1088 -                                ^ Not all control paths return a value (_GTM)

dsdt.dsl  9507:                     Method (_GTM, 0, NotSerialized)
Warning  1081 -                                ^ Reserved method must return a value (Buffer required for _GTM)

dsdt.dsl  9667:                         Method (_GTF, 0, NotSerialized)
Warning  1088 -                                    ^ Not all control paths return a value (_GTF)

dsdt.dsl  9667:                         Method (_GTF, 0, NotSerialized)
Warning  1081 -                                    ^ Reserved method must return a value (Buffer required for _GTF)

dsdt.dsl  9735:                         Method (_GTF, 0, NotSerialized)
Warning  1088 -                                    ^ Not all control paths return a value (_GTF)

dsdt.dsl  9735:                         Method (_GTF, 0, NotSerialized)
Warning  1081 -                                    ^ Reserved method must return a value (Buffer required for _GTF)

dsdt.dsl  9808:                     Method (_GTM, 0, NotSerialized)
Warning  1088 -                                ^ Not all control paths return a value (_GTM)

dsdt.dsl  9808:                     Method (_GTM, 0, NotSerialized)
Warning  1081 -                                ^ Reserved method must return a value (Buffer required for _GTM)

dsdt.dsl  9968:                         Method (_GTF, 0, NotSerialized)
Warning  1088 -                                    ^ Not all control paths return a value (_GTF)

dsdt.dsl  9968:                         Method (_GTF, 0, NotSerialized)
Warning  1081 -                                    ^ Reserved method must return a value (Buffer required for _GTF)

dsdt.dsl 10036:                         Method (_GTF, 0, NotSerialized)
Warning  1088 -                                    ^ Not all control paths return a value (_GTF)

dsdt.dsl 10036:                         Method (_GTF, 0, NotSerialized)
Warning  1081 -                                    ^ Reserved method must return a value (Buffer required for _GTF)

ASL Input:  dsdt.dsl - 10111 lines, 370896 bytes, 4450 keywords
Compilation complete. 12 Errors, 24 Warnings, 0 Remarks, 37 Optimizations

12 errors, 24 warnings, i.e. not good!
i get the same results on arch32 too.. so don't go blaming wheezy32!

debian stretch kernel compile

debian kernels contain everything needed by everyone. customising your kernel is easy and highly recommended. i recommend using the same kernel version/source, to comply with debian security/updates.

jwm

i seem to have come full circle, through quite a lot of de/wm back to the rather humble jwm. and i'm quite pleasantly surprised. jwm replaces my current openbox + tint2 setup quite well, perhaps even better.. more efficient, quicker, smaller, faster, simpler and very customisable. jwm gives me everything i use in openbox and tint2 combined. i think this is the end of my openbox saga.

kernel compile debian way

1. prepare your system

verify you have sufficient diskspace. about 1g or so.
you do not need root. normal user can compile.
you do not need to compile on your own system. another system, with faster cpu, more memory, spare demand, etc can compile your kernel.

evilwm

my wm journey moves on... from various bloatwares to fluxbox to ratpoison to spectrwm to dwm... now to evilwm :-)
i hope to keep this post updated, and accumulate my evilwm experience.

i did a memory profile on some window managers on my radar, and found evilwm to be using the least memory of them. that made me look at it in more detail, and i find i like it better than dwm that i'm currently using.

evilwm install in debian
[code]# apt-get update && apt-get install evilwm[/code]

edit .xinitrc (.xsession if you use any dm). change current wm with evilwm.
[code]exec evilwm -term gmrun -nosoliddrag[/code]

keyboard meta is ctrl-alt
my most used are

1-8 - change virtual desktop
left - prev virtual desktop
right - next virtual desktop
f - (un)fix window

x - maximise current window (toggle)
= - maximise current window vertically (toggle)
HJKL - shift window
hjkl - move window
yubn - move window to screen corner

alt+tab - cycle through windows (don't use meta key)

to maximise window horizontally: use = and x alternatively and repeat to toggle.
to move windows between virtual desktops: fix window, change desktop, unfix window.

manual says "To make evilwm exit, you have to kill the process". i completely agree - providing spurious buttons is bloat - not the job of a wm. and why would you want to exit x? to shutdown?

just shutdown
$ sudo halt

if i do have to quit evilwm
$ killall -9 evilwm

as i have mapped gmrun to evilwm default term, i bring up a command-line with ctrl-alt-enter and enter the above commands.

or you could map the commands to a keyboard shortcut of your choice. if that is how you like it, use xbindkeys.

as this is an extremely efficient wm, for any additional functionality you can use other extremely efficient apps to add features you may need.

gmrun - command-line application launcher
xbindkeys - custom keyboard shortcuts

ref links:
http://www.6809.org.uk/evilwm/ChangeLog-1.1
wiki.archlinux.org/index.php/evilwm
gentoo-wiki.info/evilwm
http://forums.debian.net/viewtopic.php?t=15077

android roadmap?

i'm not sure which way google are going, but they seem to want to turn the android into a desktop os, rather than a handheld os. google are doing to android, what microsoft did to windows.. make it bloatware & proprietary locking everyone out, till people give up and move to alternatives.

my toolkit

i am on a constant quest for more efficient apps. soon as i find one, i change over. efficiency means smaller code, focussed approach. leaner code is cleaner code is more efficient code.

mtrr cleanup

having just done an upgrade, i went through the logs and found some mtrr #fail issues.

$ dmesg | grep -i mtrr
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000] MTRR variable ranges enabled:
[    5.811624] mtrr: type mismatch for d0000000,10000000 old: write-back new: write-combining
[    5.811628] [drm] MTRR allocation failed.  Graphics performance may suffer.

$ cat /proc/mtrr
reg00: base=0x0c0000000 ( 3072MB), size= 1024MB, count=1: uncachable
reg01: base=0x000000000 (    0MB), size= 4096MB, count=1: write-back
reg02: base=0x100000000 ( 4096MB), size= 1024MB, count=1: write-back
reg03: base=0x0bf700000 ( 3063MB), size=    1MB, count=1: uncachable
reg04: base=0x0bf800000 ( 3064MB), size=    8MB, count=1: uncachable

the above doesn't seem to add up right. note that i have 4gb of memory on this machine.
debian testing 3.2.0-2-amd64 #1 SMP Fri Jun 1 17:49:08 UTC 2012 x86_64 GNU/Linux

i found many recommendations to enable_mtrr_cleanup, including this: http://forums.gentoo.org/viewtopic-t-857061-start-0-postdays-0-postorder-asc-highlight-.html. so i added the kernel bootoptions
enable_mtrr_cleanup mtrr_spare_reg_nr=1
to the grub commandline, and here is the result.

$ dmesg | grep -i mtrr
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000] MTRR variable ranges enabled:
[    0.000000] original variable MTRRs
[    0.000000] Found optimal setting for mtrr clean up
[    0.000000] New variable MTRRs

$ cat /proc/mtrr
reg00: base=0x000000000 (    0MB), size= 2048MB, count=1: write-back
reg01: base=0x080000000 ( 2048MB), size= 1024MB, count=1: write-back
reg02: base=0x0bf700000 ( 3063MB), size=    1MB, count=1: uncachable
reg03: base=0x0bf800000 ( 3064MB), size=    8MB, count=1: uncachable
reg04: base=0x100000000 ( 4096MB), size= 1024MB, count=1: write-back
reg05: base=0x0d0000000 ( 3328MB), size=  256MB, count=1: write-combining

now this look much better! i'm keeping this kernel bootoption. have a go yourself, and post your (before/after) results below.

update: i should use mtrr_spare_reg_nr=0, as the first reg is 00.

cyanogenmod 7.1.0

Finally, after a long wait, CM 7.1 has been released for my ZTE Blade. The last (supposedly) stable release CM 7.0.3 wasn't that stable. 7.1.0-RC1, the subsequent Release Candidate was more stable, but still carried over Battery drain issues, Apps leaking, GPS reboots, etc.

Opera cpu/memory leaks and Flash

i have been a long term user of opera, as i like it's light resource demands. one particular concern has been the long running issue of cpu/memory leaks. opera seems to continue consuming cpu/memory as it runs longer. so you need to periodically *restart* it. this problem exacerbates after visiting websites with flash. sometimes, it gets so bad, that i have to kill -9 ... i usually disable plugins, or only enable on-demand. but there are times when i need flash.

$ ps ux | grep opera
gives some clue. seems to me that opera plugin handling is badly written, when I see
.../lib/opera//operapluginwrapper
.../lib/opera//operaplugincleaner
note the double slashes in the path, instead of a single slash.

i found some others having similar problems. perhaps they might help. although, they seem to be historical issues, i still have problems with opera 11.51, the latest release.

>> extremely high CPU usage by opera plugin wrapper process http://ubuntuforums.org/showthread.php?t=1288274

>> build 4464 (intel linux) and operapluginwrapper http://www.archivum.info/opera.beta/2009-07/00030/build-4464-(intel-linux)-and-operapluginwrapper.html

local.prop

i used to change my /system/build.prop, each time i found a hack. frequent changes were cumbersome, as /system partition is read-only. also, any rom updates would wipe that clean.

now i put these changes in /data/local.prop, a more efficient way of keeping all these hacks together, and maintaining them across rom updates. also, /data partition is mounted read-write. so i can push the changes anytime.

mint xfce menu

mint updates break mint's elegant xfce menu. first login asks whether you want to keep, migrate or replace the old menu. it doesn't matter what you choose. apparently the old menu in incompatible with the new update.

i did not want to manually code the xfce menu, to avoid incompatibilities with future mint updates. reluctantly, i had to use the memory-hungry but presentable gnome-menu instead.

edit: just discovered the bug and solution here:
https://bugs.launchpad.net/linuxmint/+bug/806859
http://forums.linuxmint.com/viewtopic.php?t=74615

Deb-Ian

I have had a long standing on-off relationship with debian going back to the potato years. I had tried many distros, but for whatever reason kept coming back to debian eventually. I have revived that affair again, and I must say I like it. I don't know, if it is due to my familiarity with this distro. I tried ubuntu for a few days, and came back to debian very quickly. Ubuntu is bloatware and targetting at n00bs. I've possibly gone past that stage, and I probably know what I want and don't. I'm still not an expert yet, but I'm getting there...

most viewed