1 |
On Tuesday, August 09, 2016 09:13:31 AM james wrote: |
2 |
> On 08/09/2016 07:42 AM, Michael Mol wrote: |
3 |
> > On Monday, August 08, 2016 10:45:09 PM Alan McKinnon wrote: |
4 |
> >> On 08/08/2016 19:20, Michael Mol wrote: |
5 |
> >>> On Monday, August 08, 2016 06:52:15 PM Alan McKinnon wrote: |
6 |
> >>>> On 08/08/2016 17:02, Michael Mol wrote: |
7 |
> >>> snip <<< |
8 |
> >> |
9 |
> >> KMail is the lost child of KDE for many months now, I reckon this |
10 |
> >> situation is just going to get worse and worse. I know for myself my |
11 |
> >> mail problems ceased the day I dumped KMail4 for claws and/or thunderbird |
12 |
> > |
13 |
> > That's really, really sad. |
14 |
> > |
15 |
> > I used Thunderbird for years, but I eventually had to stop when it would, |
16 |
> > averaging once a month (though sometimes not for a couple months, |
17 |
> > sometimes a couple times a week) explode in memory consumption and drive |
18 |
> > the entire system unresponsively into swap. |
19 |
> > |
20 |
> > I've tried claws from time to time due to other annoyances with |
21 |
> > Thunderbird, but I kept switching back. Not because I liked Tbird, but |
22 |
> > (IIRC) because of stability issues I had with claws. |
23 |
> > |
24 |
> > Even with the bugs it has, Kontact and Akonadi has been the most reliable |
25 |
> > mail client I've used in the last year. When it gives me problems, I know |
26 |
> > why, and I can address it. (Running a heavily tuned MySQLd instance |
27 |
> > behind Akonadi, for example...) |
28 |
> > |
29 |
> > I wish someone would pay me to fix this stuff; I'd be able to spend the |
30 |
> > time on it. |
31 |
> |
32 |
> Perhaps an experiment. Locate some folks that know about how to promote |
33 |
> 'crowd funding'. The propose a project like this, targeted at business |
34 |
> and user, to all pitch in. In fact, quite a few beloved open source |
35 |
> projects could benefit, if the idea of crowd funding took hold |
36 |
> on open source soft. Perhaps one of the foundations deeply involved in |
37 |
> the open source movement would get behind the idea? |
38 |
> |
39 |
> KDE is very popular, so the concept or something similar might just have |
40 |
> legs, even if it only funds a series of grad-students or young |
41 |
> programmers to maintain good FOSS projects? |
42 |
|
43 |
A wonderful thought. I rather expect KDE is already doing this, but if not, they ought to. (I'm |
44 |
sure someone who commits code to KDE reads this list...) |
45 |
|
46 |
Certainly wouldn't cover someone like me who has a family to support, but still. |
47 |
|
48 |
> |
49 |
> AS a side note, I put 32G of ram on my system and still at times it is |
50 |
> laggy with little processor load and htop shows little <30% ram usage. |
51 |
> What tools do you use to track down mem. management issues? |
52 |
|
53 |
I use Zabbix extensively at work, and have the Zabbix agent on my workstation reporting |
54 |
back various supported metrics. There's a great deal you can use (and--my favorite-- |
55 |
abuse) Zabbix for, especially once you understand how it thinks. |
56 |
|
57 |
> |
58 |
> Any specific kernel tweaks? |
59 |
|
60 |
Most of my tweaks for KDE revolved around tuning mysqld itself. But for sysctls improving |
61 |
workstation responsiveness as it relates to memory interactions with I/O, these are my go- |
62 |
tos: |
63 |
|
64 |
vm.*dirty*_background_bytes = 1048576 |
65 |
vm.*dirty*_bytes = 10485760 |
66 |
vm.*swap*piness = 0 |
67 |
|
68 |
vm.dirty_background_bytes ensures that any data (i.e. from mmap or fwrite, not from |
69 |
swapping) waiting to be written to disk *starts* getting written to disk once you've got at |
70 |
least the configured amount (1MB) of data waiting. (If you've got a disk controller with |
71 |
battery-backed or flash-backed write cache, you might consider increasing this to some |
72 |
significant fraction of your write cache. I.e. if you've got a 1GB FBWC with 768MB of that |
73 |
dedicated to write cache, you might set this to 512MB or so. Depending on your workload. |
74 |
I/O tuning is for those of us who enjoy the dark arts.) |
75 |
|
76 |
vm.dirty_bytes says that once you've got the configured amount (10MB) of data waiting to |
77 |
be disk, then no more asynchronous I/O is permitted until you have no more data waiting; |
78 |
all outstanding writes must be finished first. (My rule of thumb is to have this between 2-10 |
79 |
times the value of vm.dirty_background_bytes. Though I'm really trying to avoid it being |
80 |
high enough that it could take more than 50ms to transfer to disk; that way, any stalls that |
81 |
do happen are almost imperceptible.) |
82 |
|
83 |
You want vm.dirty_background_bytes to be high enough that your hardware doesn't spend |
84 |
its time powered on if it doesn't have to be, and so that your hardware can transfer data in |
85 |
large, efficient, streamable chunks. |
86 |
|
87 |
You want vm.dirty_bytes enough higher than your first number so that your hardware has |
88 |
enough time to spin up and transfer data before you put the hammer down and say, "all |
89 |
right, nobody else gets to queue writes until all the waiting data has reached disk." |
90 |
|
91 |
You want vm.dirty_bytes *low* enough that when you *do* have to put that hammer down, |
92 |
it doesn't interfere with your perceptions of a responsive system. (And in a server context, |
93 |
you want it low enough that things can't time out--or be pushed into timing out--waiting for |
94 |
it. Call your user attention a matter of timing out expecting things to respond to you, and |
95 |
the same principle applies...) |
96 |
|
97 |
Now, vm.swappiness? That's a weighting factor for how quickly the kernel should try |
98 |
moving memory to swap to be able to speedily respond to new allocations. Me, I prefer |
99 |
the kernel to not preemptively move lesser-used data to swap, because that's going to be |
100 |
a few hundred megabytes worth of data all associated with one application, and it'll be a |
101 |
real drag when I switch back to the application I haven't used for half an hour. So I set |
102 |
vm.swappiness to 0, to tell the kernel to only move data to swap if it has no other |
103 |
alternative while trying to satisfy a new memory allocation request. |
104 |
|
105 |
-- |
106 |
:wq |