What is the max temp for my i7-4790K. I am getting 99c at 65% load. That seem high compared to what I have read on the web.
It is entirely possible that 99c is the highest representable temperature for your processor. Let's discuss...
The processor has Digital Thermal Sensors (DTS) located at specific hotspots on the die. There is one DTS in the die area for each processor core plus some number of other DTS within other portions of the processor (within the GPU, etc.). The DTS are designed to support the processor's Thermal Control Circuit (TCC), which throttles processor performance to protect the processor from critically high temperatures. The point where the TCC is activated is when any of the DTS reach the die's Maximum Junction Temperature (called Tjmax). Since this is the primary purpose for the DTS, the design of the DTS is not to provide a general-purpose digital read-out of the die's temperature. Instead, it provides the offset that the die's current temperature is below its Tjmax. If the temperature is, say, 90c and the processor's Tjmax is, say, 100c, then the reading will be (an offset of) 10c.
Aside: Before I go on, let's discuss the implications of this DTS implementation. First and foremost, there is no way to represent temperature readings when the temperature is above Tjmax. At or above Tjmax, the reading is (an offset of) 0c. That is, if the throttling implemented by the TCC does not stop the temperature from rising further, then the (offset of) 0c reading will continue to be exposed. Secondly, due to such factors as leakage current, etc., the Tjmax temperature can vary from one individual desktop processor to another. During the thermal validation of the processor die, Intel will customize the DTS representation for Tjmax to make it as accurate as possible.
Since the DTS are providing a reading that is relative to (an offset from) Tjmax, a method for representing this as an absolute temperature (in Celsius) is required. Also during the thermal validation process, Intel configures the contents of one of the Model-Specific-Registers (MSRs) with this Tjmax temperature value. To obtain this value, you need to read the IA32 Temperature Target MSR (0x01A2). Bits 16-23 provide the processor's Tjmax value. You can also read the temperature of the DTS that are implemented within each core by reading the IA32 Thermal Status MSR (0x019C) while running on that core. The current temperature offset from the Tjmax value is found in bits 16-22. The current temperature at this DTS is determined by equation "Current-Temperature = Tjmax - Temperature-Offset".
In order to support external devices (such as the Super I/O (SIO) IC) implementing a fan speed control capability for the processor cooling fan, a circuit combines the temperature readings of the various DTS included in the processor and exposes a single temperature reading, called the Package Temperature. You can read this temperature by reading the IA32 Package Thermal Status MSR (0x01B1). It is also made available to external devices via the Platform Environmental Control Interface (PECI). Now, in order to allow the external device to implement a basis (an upper limit) for this fan speed control, it also publishes a Control Temperature (Tcontrol) setting. Tcontrol is (also) provided in the IA32 Temperature Target MSR, in bits 8-15. Like DTS readings, it is represented as an offset from the processor's Tjmax value. That is, Tcontrol is determined by equation "Tcontrol = Tjmax - Tcontrol-Offset".
Ok, how do you use this Tcontrol value? Well, Intel has implemented some rules around it. The primary rule reads as follows: In the absence of other information (i.e. the individual processor's Thermal Load Line and the processor heatsink's Thermal Dissipation curve - both of which are typically not available), the processor cooling fan is required to be at 100% duty cycle (i.e. full speed) if the processor's Package temperature is above its Tcontrol threshold. Typically, over some temperature range that is anchored below Tcontrol, the fan will be increased from some minimum duty cycle (and minimum speed) to its maximum duty cycle (and maximum speed).
Ok, how do you read these MSRs and determine your Tjmax and Tcontrol temperature values? Well, one tool that I know of is called RWEverything. You can configure RWEverything to read these MSRs (amongst others).
Hope this helps,