Save Oracle/Sun from Monty and alike.

Few days ago I received a humble entreaty from Monty Creator of MySQL to step in and save his child from dirty beast whose name is Oracle. I must confess, that whilst this stinky story had been evolving and surging up I tried to publicly keep silence (I do clear understand that my voice could hardly be heard anyway) in hope that common sense would prevail over. But to my dissatisfaction it didn’t happen. I’m not going into the loop repeating all the arguments and opinions that MySQL won’t die even if Oracle, after the years of being a strong MySQL supporter, decides to abandon it – the probability of such step is the same as if a meteorite smashes our green earth one day. But seriously, Oracle and MySQL are two strong players but from absolutely different leagues, they don’t even nearly compete. So why did they choose Oracle as the object for their attacks and not PostgreSQL or Firebird?! In that case I could’ve understood that. In my country we have a saying that “Good always wins over evil” but nowadays it has undergone a modification – “Loot always wins over evil”. My believe is that something similar is happening here – don’t forget who has sold MySQL in the first place…

Posted on January 6, 2010 at 2:33 pm by sergeyt · Permalink · Leave a comment
In: Oracle, Sun

2010 is just around the corner

Like it or not but it’s less than 10 hours in my GMT-world before we enter into a new decade. I’m really not a big fan of drawing the lines and summing up of what have been or could have been done so I will totally ignore that ;-)

Instead of that I’ll try to be simple – Happy New Year, friends! Try to enjoy every day of your life and keep doing what you’re the very best at. And let it be another memorable decade full of truly positive events and heart-touching moments.

Cheers.

Posted on December 31, 2009 at 2:51 pm by sergeyt · Permalink · Leave a comment
In: Life

Your life has value!

Posted on December 29, 2009 at 11:54 am by sergeyt · Permalink · Leave a comment
In: Life

SDC’s big theory

Just copy-pasting a high-level description of new SDC scheduling class taken from corresponding PSARC discussion to ease future reference.

/*
 * The System Duty Cycle (SDC) scheduling class
 * --------------------------------------------
 *
 * Background
 *
 * Kernel threads in Solaris have traditionally not been large consumers
 * of CPU time.  They typically wake up, perform a small amount of
 * work, then go back to sleep waiting for either a timeout or another
 * signal.  On the assumption that the small amount of work that they do
 * is important for the behavior of the whole system, these threads are
 * treated kindly by the dispatcher and the SYS scheduling class: they run
 * without preemption from anything other than real-time and interrupt
 * threads; when preempted, they are put at the front of the queue, so they
 * generally do not migrate between CPUs; and they are allowed to stay
 * running until they voluntarily give up the CPU.
 *
 * As Solaris has evolved, new workloads have emerged which require the
 * kernel to perform significant amounts of CPU-intensive work.  One
 * example of such a workload is ZFS's transaction group sync processing.
 * Each sync operation generates a large batch of I/Os, and each I/O
 * may need to be compressed and/or checksummed before it is written to
 * storage.  The taskq threads which perform the compression and checksums
 * will run nonstop as long as they have work to do; a large sync operation
 * on a compression-heavy dataset can keep them busy for seconds on end.
 * This causes human-time-scale dispatch latency bubbles for any other
 * threads which have the misfortune to share a CPU with the taskq threads.
 *
 * The SDC scheduling class is a solution to this problem.
 *
 *
 * Overview
 *
 * SDC is centered around the concept of a thread's duty cycle (DC):
 *
 *			      ONPROC time
 *	Duty Cycle =	----------------------
 *			ONPROC + Runnable time
 *
 * This is the ratio of the time that the thread spent running on a CPU
 * divided by the time it spent running or trying to run.  It is unaffected
 * by any time the thread spent sleeping, stopped, etc.
 *
 * A thread joining the SDC class specifies a "target" DC that it wants
 * to run at.  To implement this policy, the routine sysdc_update() scans
 * the list of active SDC threads every few ticks and uses each thread's
 * microstate data to compute the actual duty cycle that that thread
 * has experienced recently.  If the thread is under its target DC, its
 * priority is increased to the maximum available (sysdc_maxpri, which is
 * 99 by default).  If the thread is over its target DC, its priority is
 * reduced to the minimum available (sysdc_minpri, 0 by default).  This
 * is a fairly primitive approach, in that it doesn't use any of the
 * intermediate priorities, but it's not completely inappropriate.  Even
 * though threads in the SDC class might take a while to do their job, they
 * are by some definition important if they're running inside the kernel,
 * so it is reasonable that they should get to run at priority 99.
 *
 * If a thread is running when sysdc_update() calculates its actual duty
 * cycle, and there are other threads of equal or greater priority on its
 * CPU's dispatch queue, sysdc_update() preempts that thread.  The thread
 * acknowledges the preemption by calling sysdc_preempt(), which calls
 * setbackdq(), which gives other threads with the same priority a chance
 * to run.  This creates a de facto time quantum for threads in the SDC
 * scheduling class.
 *
 * An SDC thread which is assigned priority 0 can continue to run if
 * nothing else needs to use the CPU that it's running on.  Similarly, an
 * SDC thread at priority 99 might not get to run as much as it wants to
 * if there are other priority-99 or higher threads on its CPU.  These
 * situations would cause the thread to get ahead of or behind its target
 * DC; the longer the situations lasted, the further ahead or behind the
 * thread would get.  Rather than condemning a thread to a lifetime of
 * paying for its youthful indiscretions, SDC keeps "base" values for
 * ONPROC and Runnable times in each thread's sysdc data, and updates these
 * values periodically.  The duty cycle is then computed using the elapsed
 * amount of ONPROC and Runnable times since those base times.
 *
 * Since sysdc_update() scans SDC threads fairly frequently, it tries to
 * keep the list of "active" threads small by pruning out threads which
 * have been asleep for a brief time.  They are not pruned immediately upon
 * going to sleep, since some threads may bounce back and forth between
 * sleeping and being runnable.
 *
 *
 * Interfaces
 *
 * void sysdc_thread_enter(t, dc, flags)
 *
 *	Moves a kernel thread from the SYS scheduling class to the
 *	SDC class. t must have an associated LWP (created by calling
 *	lwp_kernel_create()).  The thread will have a target DC of dc.
 *	Flags should be either 0 or SYSDC_THREAD_BATCH.  If
 *	SYSDC_THREAD_BATCH is specified, the thread will run with a
 *	slightly lower priority (see "Batch threads", below).
 *
Posted on December 27, 2009 at 9:58 am by sergeyt · Permalink · Leave a comment
In: Solaris

Visualizing DTrace: Sun Storage 7000 Analytics

If for some reason you woke up today in a bad and sombre mood than just follow this link to skyrocket it for the rest of the day. More over you could kill to birds with one stone because apart from being very hilarious it’s a very educational presentation as well. Enjoy!

Posted on December 24, 2009 at 9:12 pm by sergeyt · Permalink · Leave a comment
In: Sun

Week in a hospital’s confinement

This week I will have to spend within four walls with my kid as a precaution measure against pneumonia. He was close but thanks God now he is on right track and getting better and better with every day.

Update. Here is a photo of a “bed” we have to sleep on with my kid. I believe it should be good for health to lay on a firm surface ;-)

Posted on December 21, 2009 at 10:34 am by sergeyt · Permalink · Leave a comment
In: Life

Working with FC in Linux

Here is a short list of several commands that are quite handy when dealing with linux, especially with redhat based distros, and fibre channel.

Posted on December 18, 2009 at 12:08 pm by sergeyt · Permalink · Leave a comment
In: Linux

Another piece of paper to decorate a wall

Today I successfully passed Sun Certified System Administrator for Sun Cluster 3.2 certification exam and now awaiting for a new certificate to be delivered to my home address. Sweet…

Posted on December 17, 2009 at 2:59 pm by sergeyt · Permalink · Leave a comment
In: Life, Sun

Double daddy

Yesterday my wife delivered another human soul into this world – making me twice happier than before. This time it’s a girl. I haven’t seen my cute baby yet and could hardly wait when they both return back to home.

Posted on December 3, 2009 at 11:55 am by sergeyt · Permalink · Leave a comment
In: Life

Hard to be NonStop

Just a short set of commands to verify and reset disk status on NonStop platform:

scf status disk $DATA02
scf info disk $*
scf status disk $DATA02, detail
scf reset $DATA02
scf start $DATA02

Posted on November 27, 2009 at 12:22 pm by sergeyt · Permalink · Leave a comment
In: Uncategorized