How to discover 'OS waits' reason?

Hi,
Sometimes my server freezes for a minute. INNODB STATUS ‘OS waits’ significantly rises at these moments, please see the graph.

[ATTACH=CONFIG]n19867[/ATTACH]

PROCESSLIST shows much ‘updating’ and ‘query end’ sessions as well.

[ATTACH=CONFIG]n19868[/ATTACH]

How to discover the reason of OS waits rise?

CentOS 6
Percona-Server-server-55-5.5.16

ishopdb01-semaphor-1h.png|attachment

ishopdb01-myprocess-1h.png|attachment

Below are semaphores from INNODB STATUS. Could it help to reduce OS waits?

--Thread 139899316999936 has waited at btr0cur.c line 553 for 0.0000 seconds the semaphore:
S-lock on RW-latch at 0x35780ba8 '&new_index->lock'
a writer (thread id 139899306510080) has reserved it in mode exclusive
number of readers 0, waiters flag 1, lock_word: fffffffffff00000
Last time read locked in file btr0cur.c line 553
Last time write locked in file /home/ignacio.nin/src/work/BUILD/Percona-Server-5.5.16-rel22.0/Percona-Server-5.5.16-rel2
2.0/storage/innobase/ibuf/ibuf0ibuf.c line 400
--Thread 139939654498048 has waited at lock0lock.c line 3919 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 1
waiters flag 1
--Thread 139939671557888 has waited at row0sel.c line 3079 for 0.0000 seconds the semaphore:
S-lock on RW-latch at 0x7f3d20b38ef8 '&block->lock'
a writer (thread id 139899201611520) has reserved it in mode wait exclusive
number of readers 8, waiters flag 1, lock_word: fffffffffffffff8
Last time read locked in file row0sel.c line 3079
Last time write locked in file /home/ignacio.nin/src/work/BUILD/Percona-Server-5.5.16-rel22.0/Percona-Server-5.5.16-rel2
2.0/storage/innobase/btr/btr0cur.c line 286
--Thread 139939646269184 has waited at trx0trx.c line 1772 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 0
waiters flag 0
--Thread 139939659716352 has waited at lock0lock.c line 5453 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 0
waiters flag 0
--Thread 139939674568448 has waited at lock0lock.c line 3919 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 0
waiters flag 0
--Thread 139939679786752 has waited at lock0lock.c line 3919 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 1
waiters flag 0
--Thread 139899306510080 has waited at lock0lock.c line 3203 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 0
waiters flag 0
--Thread 139939679586048 has waited at lock0lock.c line 3919 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 0
waiters flag 0
--Thread 139939666138880 has waited at lock0lock.c line 3919 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 0
waiters flag 0
--Thread 139939655702272 has waited at lock0lock.c line 5453 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 0
waiters flag 0
--Thread 139899201611520 has waited at row0row.c line 801 for 0.0000 seconds the semaphore:
X-lock (wait_ex) on RW-latch at 0x7f3d20b38ef8 '&block->lock'
a writer (thread id 139899201611520) has reserved it in mode wait exclusive
number of readers 7, waiters flag 1, lock_word: fffffffffffffff9
Last time read locked in file row0sel.c line 3079
Last time write locked in file /home/ignacio.nin/src/work/BUILD/Percona-Server-5.5.16-rel22.0/Percona-Server-5.5.16-rel22.0/storage/innobase/btr/btr0cur.c line 286
--Thread 139939678783232 has waited at trx0trx.c line 795 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 0
waiters flag 0
--Thread 139939674167040 has waited at lock0lock.c line 3919 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 0
waiters flag 0
--Thread 139939650885376 has waited at lock0lock.c line 3919 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 0
waiters flag 0
--Thread 139939651487488 has waited at lock0lock.c line 3919 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 0
waiters flag 0
--Thread 139939644262144 has waited at lock0lock.c line 3919 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 0
waiters flag 0
--Thread 139939668145920 has waited at lock0lock.c line 3919 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 0
waiters flag 0
--Thread 139899327489792 has waited at lock0lock.c line 3203 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 0
waiters flag 0
--Thread 139939662526208 has waited at row0vers.c line 123 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 0
waiters flag 0
--Thread 139939675170560 has waited at trx0trx.c line 795 for 0.0000 seconds the semaphore:
Mutex at 0x1820818 '&kernel_mutex', lock var 0
waiters flag 0