Multi-threading doesn't help with the frame rate of a single 3D view rendering to a single display, as is the case that we are discussing in terms of VR performance in FlexSim.
Perhaps this diagram that explains v sync might help me explain:

(From missed-vsync.png (1562×534) (fragmentbuffer.com))
Each draw pass, FlexSim does some calculations on the CPU (e.g., traversing through each object in the screen and getting its position) and passes data down to the graphics card to process on the GPU (e.g., calling a vertex array object to draw a mesh of triangles in a particular location).
If the CPU processing takes longer than the GPU processing for that frame, then the framerate is CPU-bound. If the GPU processing takes longer, then it is GPU-bound.
The size of each bar is a combination of what is configured in your model and the power of your hardware. It isn't simply a "hardware" vs "software" limitation. The single-threaded clock speed of your CPU multiplied by the amount of CPU calculations that FlexSim does during the draw frame is what determines the size of the green bar. How amazing the multithreaded performance is, or how new the CPU is, or how expensive the CPU is does not matter in terms of 3D view framerate. What matters is the amount of processing that FlexSim does times the speed the CPU can do that processing.
So given that we're discussing rendering just the grid in the model, then the GPU side is nearly empty and any framerate drops are likely caused by the CPU processing portion of the draw pass. Thus, we are talking about a framerate that is CPU-bound. That doesn't mean that it is a hardware problem instead of a software problem. It means that the combination of the amount of software CPU calculations requested times the speed that the hardware CPU can process those requests is affecting the framerate. This is the hypothesis based on the results reported by you, which I can only confirm if I can replicate those results. Once I can confirm the cause of the framerate drop, then I can determine how to address that problem. This is what we are trying to accomplish. So far I've been unable to replicate your results so I have been giving you additional information and asking additional questions to help me understand what you are seeing so that I can replicate it in order to determine how to best resolve it.
In my previous tests, I was using a 4.0 GHz CPU that is designed for maximizing this type of gaming 3D rendering work. A lower clock speed CPU with lots of cores may be better for other types of processing work, such as running experiment replications or executing JavaScript on multiple tabs in a web browser, but when we are talking about the 3D framerate in VR in FlexSim, then the single-core clock speed is the most important metric of the CPU hardware.
Between my previous comment and now, I have done additional tests on more hardware. I tested on a laptop with a 2.8 Ghz processor with a Geforce 965M graphics card and an HTC Vive headset. I also did some tests on a 244 Hz monitor to investigate further.
I have still not replicated any significant difference between FlexSim 21.0 and 22.0 in terms of framerate. I still cannot answer why you are getting different results between those versions, as I have been unable to get different results between those versions on the 3 very different systems that I tested.
Given that your system handles 90 FPS in both FlexSim 21.0 and 22.0, then I hypothesize that Steam is what is halving the framerate in 120 Hz mode down to 60. Why it is behaving differently between 21.0 and 22.0, I cannot tell. Many graphics features (such as v sync, g sync, asynchronous spacewarp, motion smoothing, etc.) default to halving the framerate if they cannot reach the desired framerate (as shown in the image above, the last blue bar missed its mark and will be moved to the next dashed black line, thus halving the framerate). So it makes sense that if the processing of each frame tops out at ~100 FPS, that it would drop that down to 60 FPS in order to enable something like motion smoothing. I cannot explain why that would be happening with FlexSim 22.0 but not FlexSim 21.0 because I cannot reproduce that behavior. But given that both are handling 90 FPS, then the actual processing on the FlexSim side is likely the same between the versions, and something in Steam is treating them differently.
What I can reproduce is the Quick Properties window absolutely massacring the framerate because of the amount of CPU processing it requires when it is open. On my 244 Hz monitor, I got 240 FPS easily as long as Quick Properties was closed, and if I opened Quick Properties, then the framerate got clobbered down to below 60 FPS.
Thus, if your goal is to maximize your VR framerate instead of your goal being to determine what is different between FlexSim 21.0 and 22.0, then my suggestion is to add a custom toolbar button (File > Global Preferences > Customize Toolbar) that enables VR Mode instead of using the checkbox in Quick Properties. This way, you can close all the views other than a single 3D view in order to minimize the amount of CPU processing that FlexSim is doing during a draw pass. Below is a code snippet that you can execute from a script window or a custom toolbar button that will enable or disable VR Mode without Quick Properties:
treenode view = activedocumentnode();
if (get(viewwindowtype(view)) != VIEW_TYPE_3D)
return 0;
int vrmode = getvarnum(view, "vrmode");
applicationcommand("switchviewvrmode", view, !vrmode);
vrmode = applicationcommand("switchviewvrmode", view, -1);
setvarnum(view, "vrmode", vrmode);
if (vrmode) {
// force first-person mode
int firstPerson = get(viewfirstperson(view));
if (!firstPerson) {
double rz = get(viewpointrz(view));
double rx = get(viewpointrx(view));
double x = get(viewpointx(view));
double y = get(viewpointy(view));
double radius = get(viewpointradius(view));
double height = sin(degreestoradians(-1 * rx)) * radius;
double dist = cos(degreestoradians(-1 * rx)) * radius;
double locx = x + cos(degreestoradians(-90 + rz)) * dist;
double locy = y + sin(degreestoradians(-90 + rz)) * dist;
set(viewpointradius(view), height);
set(viewpointx(view), locx);
set(viewpointy(view), locy);
set(viewfirstperson(view), !firstPerson);
}
// look at the horizon (so that the world doesn't seem slanted)
set(viewpointrx(view), 0);
}
Try that and see whether you can achieve the 120 FPS that you desire, as I believe that's your actual goal rather than determining what changed between FlexSim 21.0 and 22.0, which I have been unable to determine.