mirror of
https://github.com/openjdk/jdk16u.git
synced 2025-12-10 00:31:15 -06:00
8266802: Shenandoah: Round up region size to page size unconditionally
Backport-of: e5d3ee394ae940ee0111489e6e072f327ec29c3b
This commit is contained in:
parent
5311c4d454
commit
e0060a32ba
@ -151,7 +151,9 @@ jint ShenandoahHeap::initialize() {
|
||||
Universe::check_alignment(init_byte_size, reg_size_bytes, "Shenandoah heap");
|
||||
|
||||
_num_regions = ShenandoahHeapRegion::region_count();
|
||||
assert(_num_regions == (max_byte_size / reg_size_bytes), "Must match");
|
||||
assert(_num_regions == (max_byte_size / reg_size_bytes),
|
||||
"Regions should cover entire heap exactly: " SIZE_FORMAT " != " SIZE_FORMAT "/" SIZE_FORMAT,
|
||||
_num_regions, max_byte_size, reg_size_bytes);
|
||||
|
||||
// Now we know the number of regions, initialize the heuristics.
|
||||
initialize_heuristics();
|
||||
|
||||
@ -541,10 +541,10 @@ void ShenandoahHeapRegion::setup_sizes(size_t max_heap_size) {
|
||||
}
|
||||
|
||||
// Make sure region size is at least one large page, if enabled.
|
||||
// Otherwise, uncommitting one region may falsely uncommit the adjacent
|
||||
// regions too.
|
||||
// Also see shenandoahArguments.cpp, where it handles UseLargePages.
|
||||
if (UseLargePages && ShenandoahUncommit) {
|
||||
// The heap sizes would be rounded by heap initialization code by
|
||||
// page size, so we need to round up the region size too, to cover
|
||||
// the heap exactly.
|
||||
if (UseLargePages) {
|
||||
region_size = MAX2(region_size, os::large_page_size());
|
||||
}
|
||||
|
||||
|
||||
69
test/hotspot/jtreg/gc/shenandoah/options/TestLargePages.java
Normal file
69
test/hotspot/jtreg/gc/shenandoah/options/TestLargePages.java
Normal file
@ -0,0 +1,69 @@
|
||||
/*
|
||||
* Copyright (c) 2021, Red Hat, Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test id=default
|
||||
* @requires vm.gc.Shenandoah
|
||||
*
|
||||
* @run main/othervm -XX:+UseShenandoahGC -Xms128m -Xmx128m TestLargePages
|
||||
* @run main/othervm -XX:+UseShenandoahGC -Xmx128m TestLargePages
|
||||
* @run main/othervm -XX:+UseShenandoahGC -Xms128m TestLargePages
|
||||
*
|
||||
* @run main/othervm -XX:+UseShenandoahGC -Xms131m -Xmx131m TestLargePages
|
||||
* @run main/othervm -XX:+UseShenandoahGC -Xmx131m TestLargePages
|
||||
* @run main/othervm -XX:+UseShenandoahGC -Xms131m TestLargePages
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test id=lp
|
||||
* @requires vm.gc.Shenandoah
|
||||
*
|
||||
* @run main/othervm -XX:+UseShenandoahGC -XX:+UseLargePages -Xms128m -Xmx128m TestLargePages
|
||||
* @run main/othervm -XX:+UseShenandoahGC -XX:+UseLargePages -Xmx128m TestLargePages
|
||||
* @run main/othervm -XX:+UseShenandoahGC -XX:+UseLargePages -Xms128m TestLargePages
|
||||
*
|
||||
* @run main/othervm -XX:+UseShenandoahGC -XX:+UseLargePages -Xms131m -Xmx131m TestLargePages
|
||||
* @run main/othervm -XX:+UseShenandoahGC -XX:+UseLargePages -Xmx131m TestLargePages
|
||||
* @run main/othervm -XX:+UseShenandoahGC -XX:+UseLargePages -Xms131m TestLargePages
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test id=thp
|
||||
* @requires vm.gc.Shenandoah
|
||||
* @requires os.family == "linux"
|
||||
*
|
||||
* @run main/othervm -XX:+UseShenandoahGC -XX:+UseTransparentHugePages -Xms128m -Xmx128m TestLargePages
|
||||
* @run main/othervm -XX:+UseShenandoahGC -XX:+UseTransparentHugePages -Xmx128m TestLargePages
|
||||
* @run main/othervm -XX:+UseShenandoahGC -XX:+UseTransparentHugePages -Xms128m TestLargePages
|
||||
*
|
||||
* @run main/othervm -XX:+UseShenandoahGC -XX:+UseTransparentHugePages -Xms131m -Xmx131m TestLargePages
|
||||
* @run main/othervm -XX:+UseShenandoahGC -XX:+UseTransparentHugePages -Xmx131m TestLargePages
|
||||
* @run main/othervm -XX:+UseShenandoahGC -XX:+UseTransparentHugePages -Xms131m TestLargePages
|
||||
*/
|
||||
|
||||
public class TestLargePages {
|
||||
public static void main(String[] args) {
|
||||
// Everything is checked on initialization
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user