Moving more work outside WALInsertLock
| От | Heikki Linnakangas |
|---|---|
| Тема | Moving more work outside WALInsertLock |
| Дата | |
| Msg-id | 4EE9FB65.3040604@enterprisedb.com обсуждение исходный текст |
| Ответы |
Re: Moving more work outside WALInsertLock
Re: Moving more work outside WALInsertLock |
| Список | pgsql-hackers |
I've been looking at various ways to make WALInsertLock less of a bottleneck on multi-CPU servers. The key is going to be to separate the two things that are done while holding the WALInsertLock: a) allocating the required space in the WAL, and b) calculating the CRC of the record header and copying the data to the WAL page. a) needs to be serialized, but b) could be done in parallel. I've been experimenting with different approaches to do that, but one thing is common among all of them: you need to know the total amount of WAL space needed for the record, including backup blocks, before you take the lock. So, here's a patch to move things around in XLogInsert() a bit, to accomplish that. This patch doesn't seem to have any performance or scalability impact. I must admit I expected it to give a tiny gain in scalability by shortening the time WALInsertLock is held by a few instructions, but I can't measure any. But IMO it makes the code more readable, so this is worthwhile for that reason alone. -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com
Вложения
В списке pgsql-hackers по дате отправления: