Hello,
I am a researcher in the Storage and Systems Lab at UT Austin. I am working on analyzing the performance of PostgreSQL on Persistent Memory. To be more specific, I am trying to analyze the performance of PostgreSQL-10.5 on a ramdisk device mounted with the ext4 file system.
My workload is simple. I insert 1 million rows into a table with 100 columns, where each column is 256 bytes in length, and every 10 inserts are batched into a transaction.
On running strace on all the PostgreSQL processes spawned by the server, I am observing that the total time taken in system calls is less than 5% of the total time it takes to do the 1 million inserts. I changed the configuration file to make PostgreSQL as synchronous as possible, and even then the time spent in system calls is very low.
When I run the perf tool to check where the majority time is being spent, I see that there is a function called pglz_compress() where a lot of time is getting spent and also there is a function called heap_compute_data_size() where there is significant time spent.
Could I know why so much time is being spent in user space, and how I can make PostgreSQL more I/O bound than it is now?
Thanks!
- Rohan