I have a 4 core CPU for postgres and I have submitted 6 queries parallely in 6 different sessions. But I am seeing only 1 query per CPU and the remainig queries are queued. I am not sure why is it happening. Do you have any special scheduler for postgres? I can see that CPU has been shared with other non postgres processes but postgres processes are not sharing any CPU within a core. The following is the process states. lms 2868 2209 98 07:20 ? 00:02:30 postgres: lms controller [local] SELECT lms 2869 2209 98 07:20 ? 00:02:30 postgres: lms controller [local] SELECT lms 2870 2209 0 07:20 ? 00:00:00 postgres: lms controller [local] SELECT lms 2871 2209 0 07:20 ? 00:00:00 postgres: lms controller [local] SELECT lms 2872 2209 0 07:20 ? 00:00:00 postgres: lms controller [local] SELECT lms 2873 2209 98 07:20 ? 00:02:30 postgres: lms controller [local] SELECT
If you see above, three Select queries have been queued. They are acquiring CPU only when there is a core without any postgres query running on it.
I know the postgres limitation of one query using only one core. But is there any limitation of one CPU running only one query at a time?
Are all the queries related to the same table(s)?
Which version of PostgreSQL? What's the version of OS?
Check out the locks which are not granted yet - pg_locks.granted
Your help is appreciated.
Thanks and regards,
Vineel.
--
--
Best Regards
Sameer Kumar | DB Solution Architect
ASHNIK PTE. LTD.
101 Cecil Street, #11-11 Tong Eng Building, Singapore 069 533
Yes, they query the same table. But all queries are select only. Postgres is 8.3 and OS is LINUX 2.6.32-431.el6.x86_64. Also I could see that pg_locks.granted is true for the queries I have submitted and lock mode is AccessShareLock.