In the documentation for cache_size, the description for how much memory a page takes up says "Each page uses about 1.5K of memory.". I believe that it is more accurate to say that "Each page uses the database page_size plus about 512 bytes." I don't know how best to phrase it, save as a series of examples.
"When the page_size is 1K (the default value), each cache page uses about 1.5K. When the page_size is 32K (the largest possible value), each cache page uses about 32.5K." from pagerAllocatePage(...):
pPg = sqliteMallocRaw( sizeof(*pPg) + pPager->pageSize + sizeof(u32) + pPager->nExtra + MEMDB*sizeof(PgHistory) );
Best, andy