Στο προηγούμενο μου post αναφέρθηκα γιατί πρέπει ο SQL Server να είναι μόνος τους σε ξεχωριστό server. Ένα αγαπητός συνάδελφος εξέφρασε την ερώτηση
«Δεν μπορείς να ορίσεις processor affinity;»
Εξαιρετική ερώτηση και για αυτό ας την απαντήσουμε.
Θα ξεκινήσω με το απλούστερο μέρος της απάντησης που αφορά το licensing.
Αν αυτό ίσχυε τότε δεν ήταν παράνομοι όσοι έχουν περισσότερα από ένα CPU στον server τους. Θα δήλωναν όσα είχαν αγοράσει και θα ήταν νόμιμοι. Όμως δεν ισχύει. Ειδικά τώρα που ο SQL Server 2012 είναι core based θα είχαν αρκετοί βγάλει ένα βραχνά από το κεφάλι τους. Θα μπορούσε κάποιος δηλαδή να αγοράσει ένα CPU με 6 ή περισσότερα cores και να πει ότι χρησιμοποιεί τα 4 με το affinity και να είναι εντάξει. Αυτό δεν ισχύει. Πρέπει να αγοράσει άδειες για όλα τα cores. Μην μου πείτε μα αφού έχω βάλει μόνο τα 4 και είμαι τίμιος, απλά δεν παίζει έτσι το σενάριο.
Και δεν παίζει έτσι το σενάριο διότι το processor affinity δεν σημαίνει αποκλειστική χρήση του cpu/core από τον SQL Server και ότι κάνεις άλλος δεν θα τον χρησιμοποιήσει. Όλα έχουν να κάνουν με το SQLOS και τους schedulers που δημιουργούνται. Δεν θα το γράψω αναλυτικότερα από ότι είναι γραμμένο στο documentation του προϊόντος (http://technet.microsoft.com/en-us/library/ms187104.aspx) και το οποίο εξηγεί θεωρώ ιδανικά το processor affinity mask.
Απλά θα πω (και θα το εξηγήσω αναλυτικά σε επόμενο post για να είναι ενιαίο και ολοκληρωμένο) ότι ο κάθε scheduler δεν ορίζεται σε συγκεκριμένο core/cpu αλλα μόνο αν κάνω χρήση του affinity mask. Εδώ μπλέκει και το Ι/Ο affinity αλλά σε επόμενο post αναλυτικά αυτά.
/*antonch*/