### Elasticsearch Version

8.4

### Installed Plugins

_No response_

### Java Version

_bundled_

### OS Version

Darwin kpl3x4j763.kalpatarugroup.com 20.3.0 Darwin Kernel Version 20.3.0: Thu Jan 21 00:06:51 PST 2021; root:xnu-7195.81.3~1/RELEASE_ARM64_T8101 arm64

### Problem Description

# Description
When running `./gradlew` in my Mac M1 with Big Sur I get an error from `sysctl` mentioning that `hw.perflevel0.physicalcpu` is an unknown property. When listing all properties using `sysctl -A` there's no `hw.perflevel*.*` properties at all.

Looking into this forum https://githubhot.com/repo/seanmonstar/num_cpus/issues/104 it seems the property is not displayed on versions before Monterey. I went ahead and changed this https://github.com/elastic/elasticsearch/blob/master/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/ParallelDetector.java#L67-L69 to always use the `"hw.physicalcpu"` property and was able to get a clean build.

I think we should either specify somewhere that MacOS Monterey is required for building Elasticsearch in M1 macs or change the code in `ParallelDetector.java` such that it uses `"hw.physicalcpu"` for versions older than Monterey. I personally prefer the second option and I'll be happy to take the PR for fixing it if you all agree.

### Steps to Reproduce

N/A

### Logs (if relevant)

_No response_
build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/ParallelDetector.java
private static Integer _defaultParallel = null;
    public static int findDefaultParallel(Project project) {
        
        
        if (_defaultParallel == null) {
            File cpuInfoFile = new File("/proc/cpuinfo");
            if (cpuInfoFile.exists()) {
                
                Map<String, Integer> socketToCore = new HashMap<>();
                String currentID = "";
                try (BufferedReader reader = new BufferedReader(new FileReader(cpuInfoFile))) {
                    for (String line = reader.readLine(); line != null; line = reader.readLine()) {
                        if (line.contains(":")) {
                            List<String> parts = Arrays.stream(line.split(":", 2)).map(String::trim).collect(Collectors.toList());
                            String name = parts.get(0);
                            String value = parts.get(1);
                            
                            if (name.equals("physical id")) {
                                currentID = value;
                            }
                            
                            if (name.equals("cpu cores")) {
                                assert currentID.isEmpty() == false;
                                socketToCore.put("currentID", Integer.valueOf(value));
                                currentID = "";
                            }
                        }