tag:blogger.com,1999:blog-4516533711330247058.post4049293221663733022..comments2024-03-28T07:32:09.246-07:00Comments on Robert's Db2 blog: DB2 for z/OS: Should You Do Some Buffer Pool Consolidation? Roberthttp://www.blogger.com/profile/02058625981006623480noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-4516533711330247058.post-60132518436708890622017-11-01T19:43:54.083-07:002017-11-01T19:43:54.083-07:00Thank you very much Robert for explanation. Great ...Thank you very much Robert for explanation. Great example you provided. I'm trying to assign read only objects to pgsteal(none) buffer, but some of them have updates, and since objects used across all subs, situation you described is very likely. I will also check my GBP definition for number of data entries. <br /> As always , thank you for all articles you're posting. <br />Regards Ilya.Anonymoushttps://www.blogger.com/profile/16051912882874637061noreply@blogger.comtag:blogger.com,1999:blog-4516533711330247058.post-67855991919122306482017-11-01T09:39:35.065-07:002017-11-01T09:39:35.065-07:00OK, where you indicate that you're "talki...OK, where you indicate that you're "talking about sync I/Os," I'll assume that you're referring to sync READ I/Os, as opposed to sync WRITE I/Os.<br /><br />You are seeing read I/Os for this PGSTEAL(NONE) buffer pool because you're running Db2 in data sharing mode. Consider this scenario: page 123 of table space XYZ is cached locally, on DB2A and DB2B (members of a data sharing group), in buffer pool BP5, which is defined with PGSTEAL(NONE) and has more than enough buffers to hold all pages of all objects assigned to the pool. An application process on DB2B updates page 123, causing the copy of the page cached in BP5 on DB2A to be marked invalid. The updated version of the page is written to the group buffer pool GBP5 when that change is committed, and the updated page in GBP5 is subsequently cast out to disk and is removed from GBP5 when the data entry in which it's been sitting is stolen to hold some other page. Now, an application process on DB2A needs a row in page 123. DB2A sees that the copy of that page cached in BP5 has been marked invalid. DB2A issues a read request to GBP5, hoping that the current version of the page will be found there, but the request returns no data because, as mentioned, the copy of page 123 written to GBP5 was later cast out to disk and removed from GBP5. That being the case, DB2A gets the current copy of page 123 from disk; thus, a sync read I/O.<br /><br />It seems to me that if a GBP associated with a PGSTEAL(NONE) buffer pool has enough data entries to hold all pages of all objects assigned to the pool, you might not see sync read I/Os because updated pages written to the GBP would not have to be removed from the GBP to make room for other pages.<br /><br />RobertRoberthttps://www.blogger.com/profile/02058625981006623480noreply@blogger.comtag:blogger.com,1999:blog-4516533711330247058.post-54887154981492392072017-10-30T12:23:55.475-07:002017-10-30T12:23:55.475-07:00yes, Robert , I'm talking about Sync I/Os an...yes, Robert , I'm talking about Sync I/Os and we have 8 way data sharing , and on each subs this buffer defined with PGSTEAL(NONE). <br />Anonymoushttps://www.blogger.com/profile/16051912882874637061noreply@blogger.comtag:blogger.com,1999:blog-4516533711330247058.post-39081842847003982402017-10-30T06:33:56.610-07:002017-10-30T06:33:56.610-07:00I assume that you're referring to synchronous ...I assume that you're referring to synchronous read I/Os, as opposed to synchronous write I/Os.<br /><br />Is the Db2 subsystem in question running in standalone mode, or is it a member of a data sharing group on a Parallel Sysplex?<br /><br />RobertRoberthttps://www.blogger.com/profile/02058625981006623480noreply@blogger.comtag:blogger.com,1999:blog-4516533711330247058.post-73192449655230154622017-10-29T15:58:21.478-07:002017-10-29T15:58:21.478-07:00Hi Robert,
I defined bufferpool in my Prod env...Hi Robert,<br /><br />I defined bufferpool in my Prod environment , and used PGSTEAL(NONE). <br /> my bufferpool size is 30,000 pages, and I assigned objects with total number of around 10,000 pages for now, however, I still see some Sync I/Os against objects which completely cashed ? <br /> Would you tell me what can cause that ? <br /><br /> Regards Ilya KurepaAnonymoushttps://www.blogger.com/profile/16051912882874637061noreply@blogger.comtag:blogger.com,1999:blog-4516533711330247058.post-18247123459010891082017-01-23T08:22:46.947-08:002017-01-23T08:22:46.947-08:00Not really a technical issue. More of a systems ma...Not really a technical issue. More of a systems management issue. My preference is to have identical buffer pool configurations on all members of a data sharing group, because I think this makes the system easier to manage, and it also supports an "anything can run anywhere" approach to workload distribution, which I like.<br /><br />That said, sometimes reality intrudes on one's objectives. If a particular LPAR in a Sysplex has insufficient memory to support a buffer pool configuration that is do-able on other LPARs, you may have to adjust buffer pool sizes downward for the DB2 member(s) on that LPAR. You don't want a z/OS LPAR's demand paging rate to get out of hand (as long as that demand paging rate is in the low single digits per second or less, it is not out of hand).<br /><br />One more thing: if you have a buffer pool that is 5,000 buffers on one member and 30,000 buffers on other members, and you intend to use that pool for caching objects in memory in their entirety, you'll either waste a lot of buffers in the larger pools (by assigning objects totaling only 5000 pages to those pools) or you'll have a lot of page stealing in the smaller pools (because the 30,000 pages of stuff you assigned to the pool won't fit in the 5000 buffers available in the member with the smaller pool). Either way, not a great situation. If you want to use PGSTEAL(NONE) for a buffer pool in a data sharing group, my recommendation would be to make the size of that pool the same on all members. If that means it has to be smaller than you'd like on some members, so be it. In that case, assign less stuff to the pool to avoid buffer stealing and get maximum performance benefit from PGSTEAL(NONE). <br /><br />RobertRoberthttps://www.blogger.com/profile/02058625981006623480noreply@blogger.comtag:blogger.com,1999:blog-4516533711330247058.post-32429830774167080612017-01-18T09:17:40.516-08:002017-01-18T09:17:40.516-08:00Hi Robert,
One more question, regarding bufferpoo...Hi Robert,<br /><br />One more question, regarding bufferpool for in-memory objects. I have 8-way sharing , and want to re-define one bufferpool for in-memory objects. This bufferpool is defined equally on 7 subs - with 30,000 pages, but on one subs , it's defined as 5,000 buffers. Would it create an issue to have an imbalance ? Any potential issues on subs with smaller number of buffers? <br /><br />Regards IlyaAnonymoushttps://www.blogger.com/profile/16051912882874637061noreply@blogger.comtag:blogger.com,1999:blog-4516533711330247058.post-57791793755548685632016-09-21T19:19:20.240-07:002016-09-21T19:19:20.240-07:001) For a PGSTEAL(NONE) buffer pool, I don't se...1) For a PGSTEAL(NONE) buffer pool, I don't see a need to change VPSEQT from its default value of 80. Prefetch won't be used anyway for that pool, aside from the initial prefetching into memory of pages belonging to objects assigned to the pool.<br /><br />2) Yes, if buffers must be stolen, the FIFO algorithm will be used. And yes, subsequent read I/Os will be synchronous. That's why you want to have enough buffers in a PGSTEAL(NONE) pool to hold all the pages of objects assigned to the pool.<br /><br />Robert Roberthttps://www.blogger.com/profile/02058625981006623480noreply@blogger.comtag:blogger.com,1999:blog-4516533711330247058.post-73128924617975620022016-09-20T18:35:56.466-07:002016-09-20T18:35:56.466-07:00Hi Robert,
thank you very much for interesting ...Hi Robert,<br />thank you very much for interesting article. <br />I have a couple of questions regarding in-memory bufferpool. <br /><br />1) if I specify PGSTEAL(NONE) , what VPSEQT threshold I should use ? since prefetch is not a factor for in-memory bufferpool <br /><br />2) If bufferpool is not big enough to keep assigned objects , are pages gets swapped based on FIFO algorithm ? And pages will be brought into buffer thru Sync I/O operation ? <br /><br /> regards Ilya Anonymoushttps://www.blogger.com/profile/16051912882874637061noreply@blogger.com