Solaris 11 performance optimization tips

Hi,

I need general tips for solaris 11 performance optimization.

For example - disable the unused services, etc.

Thanks,
Bhavin

Wow, where to start! :eek: What hardware are you thinking of for your server - physical or virtual?

You need to know what your server will be doing and size it appropriately, so without over-purchasing (can be very expensive) you need to for on memory, CPUs and disk.

Memory
You are looking for a score-draw here, i.e. just enough without spending too much. Too much is a waste. Too little physical memory can leave your server needing to use virtual memory (aka paging or swap space) where memory addresses not currently needed are written to disk until they are needed again. This is a relatively slow process, so you have to justify on a business case how much to buy.

CPU
You are again looking for a score-draw here so that you have a chunk (not a very technical description) more than enough so that during peaks of processing, you don't plateau your CPU at 100%. You need to consider CPU speeds, quantity and number of cores per CPU. Again, it depends on what budget you have and justifying the cost against business need.

Disk
A controversial one this, disk can be considered in several ways.

  • Space - Is it relatively trivial amounts of data (say less than 300G total) or medium, large, huge or massive (typically over 5Tb) It depends on your definition as to what category you fit into.
  • Type - Solid state can be very fast, but is expensive
  • Disk - i.e. spinning media much cheaper, but slower. Mean time between disk failures is often over 10 years
  • Local JBOD - the server owns the disks and is directly responsible for everything they do. Can be slow, but cheap for smaller installations. You need to consider how to protect yourself from a disk failure.
  • Local RAID - the server owns the disks, but some responsibility is passed to a hardware controller so it can be configured to be fault tolerant. See Standard RAID levels - Wikipedia for information about RAID configurations.
  • SAN LUNs - Storage Area Network Logical UNits. For larger installations, this is much more usual. The SAN is usually multi-path fibre connected for resilience and the SAN contains a large amount of cache so that writes to disk appear to be very fast and the SAN completes the real write in it's own time. More expensive and more to manage, the disk can be shared between servers and can be replicated across sites, cities, countries or even continents if required (given enough network resource) This can give excellent fault tolerance, but is not a substitute for backups (errors will be replicated too)
  • Real disks or a volume manager? Real disks are arguably slightly faster but volume managers allow flexibility in disk layout, mirroring (if you are on Local JBOD) and the ability to copy data, make snapshots for backups and move data between disks/arrays/SANs
  • Disk layout
    [list]
  • Generally you should look to separate /, /home (OS home area), /usr, /var, /tmp & swap space. Try to keep the boot disk used as little as possible. Just include the bare minimum to get the server running with the backup agent (if you have one)
  • Data, applications and user data (including their home area) is best kept away from the boot disk entirely. If you are using a volume manager, keep the OS in a separate volume group to everything else.
    [/list]

These are the main building blocks of your server. Way down on the list you should consider disabling unused services, however this is more of a hardening process to reduce your exposure to Denial of Service attacks or hacking attempts (even internal)

I hope that this gives you food for thought. I'm sure it's not an exhaustive list.

Kind regards,
Robin

A few comments, Solaris 11 is exclusively using ZFS for the system, so JBOD + ZFS mirroring is the recommended way to get performance and security (vs local hardware RAID). Snapshots is also a feature ZFS provides out of the box.

/var separation is the standard, /usr separation is not supported and would make the system unbootable as /bin is a symbolic link to /usr/bin.