Problems with huge_pages and IBM Power8

From: reiner peterke <zedaardv(at)drizzle(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Problems with huge_pages and IBM Power8
Date: 2016-04-12 19:58:14
Message-ID: 3489C14D-97DE-4303-97C6-99DBC70775F8@drizzle.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi

We have been doing some testing with Postgres (9.5.2) compiled on a Power8 running Centos 7

When working with huge_pages, we initially got this error.

munmap(0x3efbe4000000) failed: Invalid argument

after a bit of investigation we noticed that hugepagesize is har coded to 2MB

src/backend/port/sysv_shmem.c (ligne 360)

...
int hugepagesize = 2 * 1024 * 1024;

But on the power they were configured to 16MB. Recompiling to 16MB (8 * 1024 * 1024) and we had no problems with the tests.

My initial questions are.

1 what is the hugepagesize hard coded to 2MB?
2 are there any side effect in setting it to 16MB?
3 since on the poer hugepages can have different values, would it be possible to have this value configurable?

Going further, we tried testing hugepages also on Ubuntu 16.04, also on the power8. On Ubuntu Postgres did not like the hugepages at all (set also to 16MB) and consistently crashed.

Looking for some insight into this issue. the error from the postgres log on ubuntu is below.
It apperas to be related to semephores.

I don't have the compile optiona at the moment, I can provide those are other detais as needed.

Reiner

2016-04-12 12:26:42 CEST : 0 FATAL: semctl(7864340, 14, SETVAL, 0) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: server process (PID 13352) exited with exit code 1
2016-04-12 12:26:42 CEST : 0 LOG: terminating any other active server processes
2016-04-12 12:26:42 CEST facturation:system_dba 0 10.32.32.200WARNING: terminating connection because of crash of another server process
2016-04-12 12:26:42 CEST facturation:system_dba 0 10.32.32.200DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
2016-04-12 12:26:42 CEST facturation:system_dba 0 10.32.32.200HINT: In a moment you should be able to reconnect to the database and repeat your command.
2016-04-12 12:26:42 CEST postgres:admin 0 10.32.16.3WARNING: terminating connection because of crash of another server process
2016-04-12 12:26:42 CEST postgres:admin 0 10.32.16.3DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
2016-04-12 12:26:42 CEST postgres:admin 0 10.32.16.3HINT: In a moment you should be able to reconnect to the database and repeat your command.
2016-04-12 12:26:42 CEST postgres:perf_user 0 ::1WARNING: terminating connection because of crash of another server process
2016-04-12 12:26:42 CEST postgres:perf_user 0 ::1DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
2016-04-12 12:26:42 CEST postgres:perf_user 0 ::1HINT: In a moment you should be able to reconnect to the database and repeat your command.
2016-04-12 12:26:42 CEST : 0 WARNING: terminating connection because of crash of another server process
2016-04-12 12:26:42 CEST : 0 DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
2016-04-12 12:26:42 CEST : 0 HINT: In a moment you should be able to reconnect to the database and repeat your command.
2016-04-12 12:26:42 CEST : 0 LOG: all server processes terminated; reinitializing
2016-04-12 12:26:42 CEST : 0 LOG: could not remove shared memory segment "/PostgreSQL.1612071802": No such file or directory
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7274497, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7307267, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7340036, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7372805, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7405574, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7438343, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7471112, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7503881, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7536650, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7569419, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7602188, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7634957, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7667726, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7700495, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7733264, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7766033, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7798802, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7831571, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7864340, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:42 CEST : 0 LOG: semctl(7897109, 0, IPC_RMID, ...) failed: Invalid argument
2016-04-12 12:26:43 CEST : 0 LOG: database system was interrupted; last known up at 2016-04-12 12:22:08 CEST
2016-04-12 12:26:43 CEST : 0 LOG: database system was not properly shut down; automatic recovery in progress
2016-04-12 12:26:43 CEST : 0 LOG: redo starts at 0/1FDD8F0
2016-04-12 12:26:43 CEST : 0 LOG: invalid record length at 0/20344B0
2016-04-12 12:26:43 CEST : 0 LOG: redo done at 0/2034488
2016-04-12 12:26:43 CEST : 0 LOG: last completed transaction was at log time 2016-04-12 12:26:01.704901+02

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Oleg Bartunov 2016-04-12 20:07:04 Re: Lets (not) break all the things. Was: [pgsql-advocacy] 9.6 -> 10.0
Previous Message Kevin Grittner 2016-04-12 19:53:57 Re: [HACKERS] Re: pgsql: Avoid extra locks in GetSnapshotData if old_snapshot_threshold <