Mondrian seems to have poor performance when >=2 hierarchies are access-controlled with rollupPolicy=partial. Mondrian burns a lot of CPU; the time is not spent in SQL, and extra caching does not help.
I suspect that Mondrian is performing a cartesian product of the accessible members. Suppose that you have 3 levels, each with 100 members, and access control that makes one of those members invisible. To compute the right total for the cell whose coordinates are 'all' for each level, mondrian has to aggregate 99 * 99 * 99 ~= 1M cells.
Possible fixes? May be able to solve this by adding expression caching. Failing that, may need to push the access-control predicates down to SQL.