In a previous post, I’ve written about how to check and enable transparent hugepages in Linux globally.
Although this post is important if you actually have a usecase for hugepages, I’ve seen multiple people getting fooled by the prospect that hugepages will magically increase performance. However, hugepaging is a complex topic and, if used in the wrong way, might easily decrease overall performance. Read more
On your Linux system, you want to check whether transparent hugepages are enabled on your system.
It’s pretty simple:
You will get an output like this:
always [madvise] never
You’ll see a list of all possible options (
never ), with the currently active option being enclosed in brackets.madvise is the default.
If you look at any SSE instruction table, you might notice that there are two basic types of operations:
- Packed instructions (the assembly instruction ends with PS)
- Scalar instructions (the assembly instruction ends with SS)
For most operations, there are two versions, one packed and one scalar.
What’s the difference between them? It’s pretty simple:
- Scalar operations operate on only one element, for example a single integer.
- Packed operations operate on any element in the vector in parallel, e.g. they multiply 4 32-bit integers in a single instruction.
SSE gains it performance from using packed operations implementing the SIMD paradigm (using a single instruction, multiple values are processed). However, it is occasionally useful to avoid expensive copying by using scalar operations operation on the SSE registers.
Also see the Original source