Thread: slow server : s_lock and _bt_checkkeys on perf top

slow server : s_lock and _bt_checkkeys on perf top

From
Soni M
Date:
Hello All,

Master db size 1.5 TB
All postgres 9.1.13 installed from RHEL package.
It has streaming replica and slony replica to another servers.

Server performance is slower than usual, before that, there's a big query got cancelled and then performance get slow.

No sign of IO wait.

on sar, it's %user and %system dominate the cpu usage
01:25:04 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
Average:        all     51.91      0.00     12.03      0.66      0.00     35.39

on perf top, i saw 
 18.93%  postgres                                  [.] s_lock
 10.72%  postgres                                  [.] _bt_checkkeys
almost always at top.

I don't have any idea, what's causing it or how to resolve it ?

Any answer is very appreciated.

--
Regards,

Soni Maula Harriz

Re: slow server : s_lock and _bt_checkkeys on perf top

From
Jim Nasby
Date:
On 3/4/15 1:31 PM, Soni M wrote:
> Hello All,
>
> Master db size 1.5 TB
> All postgres 9.1.13 installed from RHEL package.
> It has streaming replica and slony replica to another servers.
>
> Server performance is slower than usual, before that, there's a big
> query got cancelled and then performance get slow.
>
> No sign of IO wait.
>
> on sar, it's %user and %system dominate the cpu usage
> 01:25:04 PM     CPU     %user     %nice   %system   %iowait    %steal
>    %idle
> Average:        all     51.91      0.00     12.03      0.66      0.00
>    35.39
>
> on perf top, i saw
>   18.93%  postgres                                  [.] s_lock
>   10.72%  postgres                                  [.] _bt_checkkeys
> almost always at top.

_bt_checkkeys is the function that compares a row in a btree index to a
condition. s_lock is a spinlock; the high CPU usage in there indicates
there's heavy lock contention somewhere.

Is there one PG process that's clearly using more CPU than the others?
What else is running in the database? Are there any unusual data types
involved?
--
Jim Nasby, Data Architect, Blue Treble Consulting
Data in Trouble? Get it in Treble! http://BlueTreble.com


Re: slow server : s_lock and _bt_checkkeys on perf top

From
Merlin Moncure
Date:
On Wed, Mar 4, 2015 at 1:31 PM, Soni M <diptatapa@gmail.com> wrote:
> Hello All,
>
> Master db size 1.5 TB
> All postgres 9.1.13 installed from RHEL package.
> It has streaming replica and slony replica to another servers.
>
> Server performance is slower than usual, before that, there's a big query
> got cancelled and then performance get slow.
>
> No sign of IO wait.
>
> on sar, it's %user and %system dominate the cpu usage
> 01:25:04 PM     CPU     %user     %nice   %system   %iowait    %steal
> %idle
> Average:        all     51.91      0.00     12.03      0.66      0.00
> 35.39
>
> on perf top, i saw
>  18.93%  postgres                                  [.] s_lock
>  10.72%  postgres                                  [.] _bt_checkkeys
> almost always at top.
>
> I don't have any idea, what's causing it or how to resolve it ?

Can you post the entire 'perf top'?  do you see (specifically I'm
wondering if you are bumping against the RecoveryInProgress s_lock
issue).  If so, upgrading postgres might be the best way to resolve
the issue.

merlin


Re: slow server : s_lock and _bt_checkkeys on perf top

From
Soni M
Date:

Thanks All for the response, finally we figure it out. The slow is due to high number of dead rows on main table, repack these tables wipe out the issue.

On Mar 6, 2015 9:31 PM, "Merlin Moncure" <mmoncure@gmail.com> wrote:
On Wed, Mar 4, 2015 at 1:31 PM, Soni M <diptatapa@gmail.com> wrote:
> Hello All,
>
> Master db size 1.5 TB
> All postgres 9.1.13 installed from RHEL package.
> It has streaming replica and slony replica to another servers.
>
> Server performance is slower than usual, before that, there's a big query
> got cancelled and then performance get slow.
>
> No sign of IO wait.
>
> on sar, it's %user and %system dominate the cpu usage
> 01:25:04 PM     CPU     %user     %nice   %system   %iowait    %steal
> %idle
> Average:        all     51.91      0.00     12.03      0.66      0.00
> 35.39
>
> on perf top, i saw
>  18.93%  postgres                                  [.] s_lock
>  10.72%  postgres                                  [.] _bt_checkkeys
> almost always at top.
>
> I don't have any idea, what's causing it or how to resolve it ?

Can you post the entire 'perf top'?  do you see (specifically I'm
wondering if you are bumping against the RecoveryInProgress s_lock
issue).  If so, upgrading postgres might be the best way to resolve
the issue.

merlin