Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:Linux üzerinde SQL Server
Bu makale, depolama, çekirdek, CPU ve ağ ayarları gibi Linux üzerinde SQL Server performansını en üst düzeye çıkarmak için işletim sistemi ve donanım yapılandırma önerilerini kapsar.
Note
Bellek yapılandırması ve kapsayıcı bellek sınırları için bkz. Performans için en iyi uygulamalar: Linux'ta SQL Server belleği.
- Depolama yapılandırma önerisi
- Yüksek performans için çekirdek ve CPU ayarları
- SQL Server yapılandırması
Depolama yapılandırma önerisi
Verileri, işlem günlüklerini ve diğer ilişkili dosyaları (bellek içi OLTP için denetim noktası dosyaları gibi) barındıran depolama alt sistemi, hem ortalama hem de en yüksek iş yüklerini düzgün bir şekilde yönetmelidir.
Uygun IOPS, aktarım hızı ve yedeklilik ile depolama alt sistemini kullanma
Şirket içi ortamlarda, depolama satıcısı normalde uygun IOPS, aktarım hızı ve yedeklilik sağlamak için birden çok disk arasında şeritleme ile uygun donanım RAID yapılandırmasını destekler. Ancak bu destek farklı depolama satıcıları ve farklı mimarilere sahip farklı depolama teklifleri arasında farklılık gösterebilir.
Azure Sanal Makineler dağıtılan Linux üzerinde SQL Server için uygun IOPS ve aktarım hızını sağlamak için yazılım RAID'i kullanmayı göz önünde bulundurun. Azure sanal makinelerde SQL Server yapılandırırken dikkat edilmesi gereken depolama konuları için bkz. Azure VM'lerde SQL Server için depolamayı yapılandırma.
Aşağıdaki örnekte, Azure Sanal Makinesinde Linux'ta yazılım RAID'inin nasıl oluşturulacağı gösterilmektedir. Veri, işlem günlüğü ve tempdb G/Ç gereksinimlerine göre birimler için gereken iş hacmi ve IOPS'yi karşılayacak uygun sayıda veri diski kullanın. Aşağıdaki örnekte VM'ye sekiz veri diski eklenmiştir: veri dosyalarını barındırmak için dört, işlem günlükleri için iki ve iş yükü için tempdb iki veri diski.
RAID oluşturma için cihazları (örneğin, /dev/sdc) bulmak için komutunu kullanın lsblk .
# For Data volume, using 4 devices, in RAID 5 configuration with 8KB stripes
mdadm --create --verbose /dev/md0 --level=raid5 --chunk=8K --raid-devices=4 /dev/sdc /dev/sdd /dev/sde /dev/sdf
# For Log volume, using 2 devices in RAID 10 configuration with 64KB stripes
mdadm --create --verbose /dev/md1 --level=raid10 --chunk=64K --raid-devices=2 /dev/sdg /dev/sdh
# For tempdb volume, using 2 devices in RAID 0 configuration with 64KB stripes
mdadm --create --verbose /dev/md2 --level=raid0 --chunk=64K --raid-devices=2 /dev/sdi /dev/sdj
Disk bölümleme ve yapılandırma önerileri
SQL Server için bir RAID yapılandırması kullanın. Dağıtılan dosya sistemi şerit birimi (sunit) ve şerit genişliği RAID geometrisi ile eşleşer. Örneğin, aşağıdaki örnek, log bölümü için XFS tabanlı yapılandırmayı göstermektedir.
# Creating a log volume, using 6 devices, in RAID 10 configuration with 64KB stripes
mdadm --create --verbose /dev/md3 --level=raid10 --chunk=64K --raid-devices=6 /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
mkfs.xfs /dev/md3 -f -L log
meta-data=/dev/md3 isize=512 agcount=32, agsize=18287648 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=585204384, imaxpct=5
= sunit=16 swidth=48 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=285744, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Disk dizisi, 64 KB şeritli altı sürücülü bir RAID-10'dur. Gördüğünüz gibi:
- için
sunit=16 blks, 16 * 4096 blok boyutu = 64 KB, şerit boyutuyla eşleşir. - için
swidth=48 blks,swidth/sunit= 3, eşlik sürücüleri hariç dizideki veri sürücülerinin sayısıdır.
Önerilen dosya sistemi yapılandırması
SQL Server, veritabanını, işlem günlüklerini ve SQL Server'da bellek içi OLTP için denetim noktası dosyaları gibi diğer dosyaları barındırmak için hem ext4 hem de XFS dosya sistemlerini destekler. SQL Server veri ve işlem günlüğü dosyalarını barındırmak için XFS dosya sistemini kullanın.
XFS dosya sistemini kullanarak birimi biçimlendirin:
mkfs.xfs /dev/md0 -f -L datavolume
mkfs.xfs /dev/md1 -f -L logvolume
mkfs.xfs /dev/md2 -f -L tempdb
XFS birimini oluştururken ve biçimlendirirken XFS dosya sistemini büyük/küçük harfe duyarsız olacak şekilde yapılandırabilirsiniz. Bu yapılandırma Linux ekosisteminde sık kullanılmaz, ancak uyumluluk nedeniyle kullanabilirsiniz.
Örneğin, aşağıdaki komutu çalıştırın. XFS dosya sistemini büyük/küçük harfe duyarsız olacak şekilde yapılandırmak için kullanın -n version=ci .
mkfs.xfs /dev/md0 -f -n version=ci -L datavolume
Kalıcı bellek dosya sistemi önerisi
Kalıcı Bellek cihazlarında dosya sistemi yapılandırması için, temel alınan dosya sistemi için blok ayırmayı 2 MB olarak ayarlayın. Daha fazla bilgi için bkz. Teknik konular.
Açık dosya sınırlaması
Üretim ortamınız varsayılan açık dosya sınırından 1024 (1.024) daha fazla bağlantı gerektirebilir.
1048576 için yumuşak ve katı sınırlar (1.048.576) ayarlayabilirsiniz. Örneğin, RHEL'de dosyayı aşağıdaki değerlere sahip olacak şekilde düzenleyin /etc/security/limits.d/99-mssql-server.conf :
mssql - nofile 1048576
Note
Bu ayar tarafından systemdbaşlatılan SQL Server hizmetleri için geçerli değildir. Daha fazla bilgi için bkz. RHEL ve systemd'da hizmetler için sınırlar ayarlama.
SQL Server verileri ve günlük dosyaları için dosya sistemlerinde son erişilen tarih ve saati devre dışı bırakma
Sistemin yeniden başlatma sonrasında sürücüleri otomatik olarak yeniden bağladığından emin olmak için bunları dosyaya /etc/fstab ekleyin. yalnızca cihaz adı yerine (örneğin/etc/fstab) sürücüye başvurmak için içindeki UUID 'yi (Evrensel Olarak Benzersiz Tanımlayıcı) /dev/sdc1 kullanın.
özniteliğini noatime SQL Server verilerini ve günlük dosyalarını depolayan herhangi bir dosya sistemiyle kullanın. Bu özniteliği ayarlama hakkında Linux belgelerinize bakın. Aşağıdaki örnekte, Azure Sanal Makinede montelenmiş bir birim için noatime seçeneği etkinleştirme gösterilmektedir.
içindeki /etc/fstabbağlama noktası girişi:
UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" /data1 xfs rw,attr2,noatime 0 0
Önceki örnekte UUID, blkid komutunu kullanarak bulabileceğiniz cihazı temsil eder.
SQL Server ve Zorlamalı Birim Erişimi (FUA) I/O alt sistemi özelliği
Desteklenen bazı Linux dağıtımları, veri dayanıklılığını sağlamak için G/Ç alt sistemi düzeyinde Zorlamalı Birim Erişimi (FUA) uygular. SQL Server, Linux iş yükleri için verimli ve güvenilir G/Ç performansı sağlamak için bu özelliği kullanır. Linux dağıtımları genelinde FUA desteği ve FUA'nın SQL Server üzerindeki etkisi hakkında daha fazla bilgi için bkz. Linux üzerinde SQL Server: Zorlamalı Birim Erişimi (FUA) İç Yapısı.
G/Ç alt sisteminde FUA desteği SUSE Linux Enterprise Server 12 SP5, Red Hat Enterprise Linux 8.0 ve Ubuntu 18.04'te kullanıma sunulmuştur. SQL Server 2017 (14.x) CU 6 ve sonraki sürümlerinde, SQL Server'da FUA ile yüksek performanslı ve verimli G/Ç'yi etkinleştirmek için aşağıdaki yapılandırmayı kullanın.
Aşağıdaki koşullar karşılanırsa bu önerilen yapılandırmayı kullanın:
SQL Server 2017 (14.x) CU 6 ve sonraki sürümleri
FUA özelliğini destekleyen Linux dağıtımı ve sürümü (Red Hat Enterprise Linux 8.0, SUSE Linux Enterprise Server 12 SP5 veya Ubuntu 18.04 ile başlayarak)
Note
SQL Server 2025(17.x) tarihinden itibaren SUSE Linux Enterprise Server (SLES) desteklenmez.
Linux çekirdek 4.18 veya sonraki sürümlerde SQL Server depolama için XFS dosya sistemi.
Linux çekirdek 5.6 veya üzeri sürümlerde SQL Server depolaması için ext4 dosya sistemi.
Note
Linux çekirdek sürümü 5.6'dan düşük olduğunda SQL Server verilerini ve işlem günlüğü dosyalarını barındırmak için XFS dosya sistemini kullanın. Çekirdek sürüm 5.6'dan başlayarak, özel gereksinimlerinize göre XFS ile ext4 arasında seçim yapabilirsiniz.
FUA özelliğini destekleyen ve yapılandırılan depolama alt sistemi ve donanım
Önerilen yapılandırma:
Başlangıç parametresi olarak izleme bayrağı 3979'ı etkinleştirin.
mssql-conf'ıcontrol.writethrough = 1vecontrol.alternatewritethrough = 0'yi yapılandırmak için kullanın.
Önceki koşulları karşılamamış diğer tüm yapılandırmalar için aşağıdaki önerilen yapılandırmayı kullanın:
İzleme bayrağı 3982'yi başlangıç parametresi (Linux ekosistemindeki SQL Server için varsayılan değerdir) olarak etkinleştirin ve izleme bayrağı 3979'un başlangıç parametresi olarak etkinleştirilmediğinden emin olun.
mssql-conf'ıcontrol.writethrough = 1vecontrol.alternatewritethrough = 1'yi yapılandırmak için kullanın.
Kubernetes'te dağıtılan SQL Server kapsayıcıları için FUA desteği
SQL Server,
overlayfsdeğil kalıcı bağlı depolama kullanmalıdır.Depolamanın XFS veya ext4 dosya sistemlerini kullanması ve FUA'yı desteklemesi gerekir (ext4 , Sürüm 5.6'dan önceki Linux çekirdeğinde FUA'yı desteklemez). Bu ayarı etkinleştirmeden önce, işletim sistemi ve depolama alt sisteminin FUA seçeneklerini desteklediğinden emin olmak için Linux dağıtım ve depolama satıcınızla birlikte çalışın. Kubernetes'te aşağıdaki komutu kullanarak dosya sistemi türünü sorgulayabilirsiniz; burada
<pvc-name>sizinPersistentVolumeClaim:kubectl describe pv <pvc-name>Çıktıda XFS olarak ayarlanmış
fstype'ı arayın.SQL Server podlarını barındıran çalışan düğümü, FUA özelliğini destekleyen bir Linux dağıtımı ve sürümü kullanmalıdır (Red Hat Enterprise Linux 8.0, SUSE Linux Enterprise Server 12 SP5 veya Ubuntu 18.04 ile başlayarak).
Yukarıdaki koşullar karşılanırsa, aşağıdaki önerilen FUA ayarlarını kullanın:
Başlangıç parametresi olarak izleme bayrağı 3979'ı etkinleştirin.
mssql-conf'ıcontrol.writethrough = 1vecontrol.alternatewritethrough = 0'yi yapılandırmak için kullanın.
Yüksek performans için çekirdek ve CPU ayarları
Aşağıdaki bölümde, bir SQL Server yüklemesi için yüksek performans ve aktarım hızıyla ilgili önerilen Linux işletim sistemi ayarları açıklanmaktadır. Bu ayarları yapılandırma işlemi için Linux dağıtımınızın belgelerine bakın. TuneD'yi, bir sonraki bölümde açıklanan birçok CPU ve çekirdek yapılandırmasını yapılandırmak için açıklandığı gibi kullanabilirsiniz.
Çekirdek ayarlarını yapılandırmak için TuneD kullanma
Red Hat Enterprise Linux (RHEL) kullanıcıları için TuneD aktarım hızı-performans profili bazı çekirdek ve CPU ayarlarını (C Durumları dışında) otomatik olarak yapılandırır. RHEL 8.0'dan başlayarak, SQL Server iş yükleri için Linux performansıyla ilgili daha ince ayarlamalar sunan adlı mssql bir TuneD profili kullanabilirsiniz. Bu profil RHEL aktarım hızı-performans profiline göre oluşturulmuş.
mssql Profil tüm ayarlarını kullanıma sunduğundan, bunları bu profili içermeyen diğer Linux dağıtımları veya RHEL sürümleri için gözden geçirebilir ve uyarlayabilirsiniz.
SUSE Linux Enterprise Server 12 SP5, Ubuntu 18.04 ve Red Hat Enterprise Linux 7.x için paketi el ile yükleyebilirsiniz tuned . Aşağıdaki bölümde açıklandığı gibi mssql profilini oluşturmak ve yapılandırmak için kullanın.
Note
SQL Server 2025(17.x) tarihinden itibaren SUSE Linux Enterprise Server (SLES) desteklenmez.
TuneD mssql profili kullanılarak önerilen Linux ayarları
Aşağıdaki örnek, Linux üzerinde SQL Server için TuneD yapılandırması sağlar.
[main]
summary=Optimize for Microsoft SQL Server
include=throughput-performance
[cpu]
force_latency=5
[sysctl]
vm.swappiness = 1
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.transparent_hugepages=always
# For multi-instance SQL deployments, use
# vm.transparent_hugepages=madvise
vm.max_map_count=1600000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
kernel.numa_balancing=0
Linux dağıtımlarını 4.18'den büyük çekirdek sürümleriyle kullanıyorsanız, aşağıdaki seçenekleri gösterildiği gibi yorumlayın. Aksi takdirde, dağıtımları 4.18'den önceki çekirdek sürümleriyle kullanıyorsanız aşağıdaki seçeneklerin açıklamasını kaldırın.
# kernel.sched_latency_ns = 60000000
# kernel.sched_migration_cost_ns = 500000
# kernel.sched_min_granularity_ns = 15000000
# kernel.sched_wakeup_granularity_ns = 2000000
Bu TuneD profilini etkinleştirmek için bu tanımları klasörün altındaki bir tuned.conf dosyaya /usr/lib/tuned/mssql kaydedin ve aşağıdaki komutları kullanarak profili etkinleştirin:
chmod +x /usr/lib/tuned/mssql/tuned.conf
tuned-adm profile mssql
Aşağıdaki komutu kullanarak profilin etkin olduğunu doğrulayın:
tuned-adm active
Veya:
tuned-adm list
CPU ayarları önerisi
Aşağıdaki tabloda CPU ayarları için öneriler sağlanır:
| Setting | Value | Daha fazla bilgi |
|---|---|---|
| CPU frekans yöneticisi | performans | Bkz. cpupower komutu |
| ENERJİ_PERF_BİAS | performans | x86_energy_perf_policy komutuna bakın |
| min_perf_pct | 100 | Intel p-state ile ilgili belgelerinize bakın |
| C Durumları | Yalnızca C1 | C Durumlarının yalnızca C1 olarak ayarlandığından emin olmak için Linux veya sistem belgelerinize bakın |
TuneD'yi açıklandığı gibi kullandığınızda, CPU frequency governor, ENERGY_PERF_BIASve min_perf_pct ayarlarını otomatik olarak yapılandırılır.
mssql profilinin temeli olarak aktarım hızı-performans profilini kullanır. C-States parametresini Linux veya sistem dağıtımcınız tarafından sağlanan belgelere göre el ile yapılandırmanız gerekir.
Disk ayarları önerileri
Aşağıdaki tabloda disk ayarları için öneriler sağlanmaktadır:
| Setting | Value | Daha fazla bilgi |
|---|---|---|
Disk readahead |
4096 |
blockdev komutuna bakın |
| sysctl ayarları | kernel.sched_min_granularity_ns = 15000000kernel.sched_wakeup_granularity_ns = 2000000vm.dirty_ratio = 80vm.dirty_background_ratio = 3vm.swappiness = 1 |
Sysctl komutuna bakın |
Description
vm.swappiness: Bu parametre, çalışma zamanı işlem belleğinin dosya sistemi önbelleğine kıyasla çıkarılması için verilen göreli ağırlığı kontrol eder. Bu parametre için varsayılan değer 60'tır. Bu değer, dosya sistemi önbellek sayfalarının 60:140 oranında kaldırılmasına kıyasla çalışma zamanı işlem bellek sayfalarının değiştirildiğine işaret eder. Değerin 1 olarak ayarlanması, çalışma zamanı işlem belleğini dosya sistemi önbelleği pahasına fiziksel bellekte tutmak için güçlü bir tercih olduğunu gösterir. SQL Server bellek havuzunu veri sayfası önbelleği olarak kullandığından ve güvenilir bir kurtarma sağlamak için dosya sistemi önbelleğini atlayarak doğrudan fiziksel donanıma yazmayı kesinlikle tercih ettiğinden, agresif bir değiştirme yapılandırması yüksek performanslı ve özel SQL Server için yararlı olabilir./proc/sys/vm/ - #swappiness belgeleri bölümünde ek bilgi bulabilirsiniz.
vm.dirty_*: SQL Server dosya yazma erişimleri, veri bütünlüğü gereksinimlerini karşılayacak şekilde önbelleğe alınmamıştır. Bu parametreler, verimli asenkron yazma performansı sağlar ve yeterince büyük önbellek kullanımına olanak tanırken boşaltmayı kontrol ederek Linux önbelleğe alma yazmalarının depolama G/Ç işlemleri üzerindeki etkisini azaltır.kernel.sched_*: Bu parametre değerleri, Linux çekirdeğindeki Tamamen Adil Zamanlama (CFS) algoritmasını ayarlamaya yönelik geçerli öneriyi temsil eder. İşlemler arası önalım ve iş parçacıklarının sürdürülmesi açısından ağ ve depolama G/Ç çağrılarının aktarım hızını artırır.
mssql TuneD profili kullanıldığında, vm.swappiness, vm.dirty_* ve kernel.sched_* ayarları yapılandırılır. Her cihaz için readahead disk ayarını blockdev komutunu kullanarak el ile yapılandırmanız gerekir.
Çok düğümlü NUMA sistemlerinde otomatik NUMA dengelemesi için çekirdek ayarı
SQL Server'ı çok düğümlü bir NUMA sistemine yüklerseniz, aşağıdaki kernel.numa_balancing çekirdek ayarı varsayılan olarak etkinleştirilir. SQL Server'ın bir NUMA sisteminde en yüksek verimlilikte çalışmasına izin vermek için, çok düğümlü bir NUMA sisteminde otomatik NUMA dengelemesini devre dışı bırakın:
sysctl -w kernel.numa_balancing=0
TuneD profiliyle mssql kullanıldığında kernel.numa_balancing seçeneği yapılandırılır.
Sanal adres alanı için çekirdek ayarları
varsayılan ayarı vm.max_map_count (65.536) şeklindedir 65536 ve bu ayar SQL Server yükleme için yeterince yüksek olmayabilir. Bu nedenle, SQL Server dağıtımı için değeri en az vm.max_map_count (262.144) olarak değiştirin262144. Bu çekirdek parametrelerinin daha fazla ayarlanması için TuneD mssql profili kullanılarak önerilen Linux ayarları bölümüne bakın. için vm.max_map_count en büyük değer : 2147483647 (2.147.483.647).
sysctl -w vm.max_map_count=1600000
TuneD profiliyle mssql kullanıldığında vm.max_map_count seçeneği yapılandırılır.
Saydam Büyük Sayfaları (THP) etkin bırakın
Çoğu Linux yüklemesinde bu seçenek varsayılan olarak açıktır. En tutarlı performans deneyimi için bu yapılandırma seçeneğini etkin bırakın. Ancak, birden çok örneği olan SQL Server dağıtımlarında yüksek bellek sayfalama etkinliği varsa veya sunucuda bellek gerektiren diğer uygulamalarla SQL Server çalıştırılıyorsa, aşağıdaki komutu yürüttükten sonra uygulamanızın performansını test edin.
echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
Veya TuneD profilini şu satırla değiştirin mssql :
vm.transparent_hugepages=madvise
Değişiklik sonrasında profilin mssql etkin olduğundan emin olun:
tuned-adm off
tuned-adm profile mssql
TuneD profiliyle mssql kullanıldığında transparent_hugepage seçeneği yapılandırılır.
Ağ ayarı önerileri
Depolama ve CPU önerilerinin yanı sıra aşağıdaki ağa özgü önerileri de göz önünde bulundurun. Farklı NIC'ler farklı ayarlar sunar. Bu seçeneklerin her biri için yönergeler için NIC satıcılarına bakın. Bu ayarları üretim ortamlarına uygulamadan önce geliştirme ortamlarında test edin ve yapılandırın. Aşağıdaki seçenekler örneklerle açıklanmıştır ve kullanılan komutlar NIC türüne ve satıcısına özeldir.
Ağ bağlantı noktası arabellek boyutunu yapılandırma. Örnekteki NIC, bir Intel tabanlı NIC olan
eth0ismini taşımaktadır. Intel tabanlı NIC için önerilen arabellek boyutu 4 KB 'tır (4096). Önceden ayarlanmış maksimum değerleri doğrulayın ve aşağıdaki örneği kullanarak yapılandırın:Aşağıdaki komutla önceden ayarlanmış maksimum değerleri denetleyin.
eth0öğesini NIC adınız ile değiştirin.ethtool -g eth0Hem
rx(alma) hem detx(iletme) arabellek boyutunu 4 KB olarak ayarlayın.ethtool -G eth0 rx 4096 tx 4096Değerin düzgün yapılandırıldığından emin olun:
ethtool -g eth0Jumbo çerçeveleri etkinleştirin. Jumbo çerçevelerini etkinleştirmeden önce, istemcilerle SQL Server arasındaki ağ paketi yolundaki tüm ağ anahtarlarının, yönlendiricilerin ve diğer önemli her şeyin jumbo çerçeveleri desteklediğini doğrulayın. Ancak o zaman jumbo çerçevelerin etkinleştirilmesi performansı artırabilir. Jumbo çerçevelerini etkinleştirdikten sonra SQL Server bağlanın ve aşağıdaki örnekte gösterildiği gibi kullanarak
sp_configureağ paketi boyutunu 8060 olarak değiştirin:# command to set jumbo frame to 9014 for a Intel NIC named eth0 is ifconfig eth0 mtu 9014 # verify the setting using the command: ip addr | grep 9014EXECUTE sp_configure 'network packet size', '8060'; GO RECONFIGURE WITH OVERRIDE; GOUyarlamalı IRQ birleştirmeyi yapılandırın. Varsayılan olarak, uyarlamalı RX/TX IRQ birleştirme için portu yapılandırın; kesme teslimatı, paket hızı düşükken gecikmeyi azaltmak ve paket hızı yüksekken verimliliği artırmak için ayarlanır. Bu ayar ağ altyapınızda kullanılamayabilir, bu nedenle mevcut ağ altyapısını gözden geçirin ve bu ayarın desteklendiğini onaylayın. Örnek, Intel tabanlı bir NIC olan adlı
eth0NIC'ye yöneliktir:Uyarlamalı RX/TX IRQ birleşim için bağlantı noktasını ayarlayın:
ethtool -C eth0 adaptive-rx on ethtool -C eth0 adaptive-tx onAyarı onaylayın:
ethtool -c eth0Note
Karşılaştırma ortamları gibi yüksek performanslı ortamlarda öngörülebilir davranışlar için uyarlamalı RX/TX IRQ birleştirmeyi devre dışı bırakın ve ardından özel olarak RX/TX kesme birleştirmesini ayarlayın. RX/TX IRQ birleştirmesini devre dışı bırakmak ve özellikle değerleri ayarlamak için örnek komutlara bakın:
Uyarlamalı RX/TX IRQ birleştirmeyi devre dışı bırakın:
ethtool -C eth0 adaptive-rx off ethtool -C eth0 adaptive-tx offDeğişikliği onaylayın:
ethtool -c eth0rx-usecsveirqparametrelerini ayarlayın.rx-usecsen az bir paket alındıktan sonra, kesme oluşturulmadan önce kaç mikrosaniye geçtiğini belirtir. parametresi,irqkesme devre dışı bırakıldığında durumun güncelleştirilmesiyle ilgili gecikmeleri belirtir. Intel tabanlı NIC'ler için aşağıdaki ayarları kullanabilirsiniz:ethtool -C eth0 rx-usecs 100 tx-frames-irq 512Değişikliği onaylayın:
ethtool -c eth0Alma tarafı ölçeklendirmeyi (RSS) etkinleştirin ve varsayılan olarak RSS kuyruklarının RX ve TX tarafını birleştirin. Microsoft Desteği ile çalışırken RSS'nin devre dışı bırakılmasının performansı da artırdığı belirli senaryolar vardır. Bu ayarı üretim ortamlarına uygulamadan önce test ortamlarında test edin. Aşağıdaki örnek Intel NIC'ler içindir.
Önceden ayarlanmış maksimum değerleri alın:
ethtool -l eth0Kuyrukları önceden ayarlanmış "Birleşik" maksimum değerde bildirilen değerle birleştirin. Bu örnekte, değeri olarak
8ayarlanır:ethtool -L eth0 combined 8Ayarı doğrulayın:
ethtool -l eth0NIC bağlantı noktası IRQ yakınlığını yapılandırın. IRQ benşimini ayarlayarak beklenen performansı elde etmek için Sunucu topolojisinin Linux işlemesi, NIC sürücü yığını, varsayılan ayarlar ve
irqbalanceayar gibi birkaç önemli parametreyi göz önünde bulundurun. Sunucu topolojisi hakkındaki bilginizi kullanarak,irqbalanceöğesini devre dışı bırakarak ve NIC üreticisine özgü ayarları kullanarak NIC bağlantı noktası IRQ affinity ayarlarını en iyi duruma getirebilirsiniz.Aşağıdaki Mellanox'a özgü ağ altyapısı örneği yapılandırmayı açıklamaya yardımcı olur. Daha fazla bilgi edinmek ve Mellanox mlnx araçlarını indirmek için bkz. Mellanox Ağ Bağdaştırıcıları için Performans Ayarlama araçları. Komutlar ortama göre değişir. Daha fazla rehberlik için NIC satıcısına başvurun.
Öğesini devre dışı bırakın
irqbalance, veya IRQ ayarlarının anlık görüntüsünü alın ve daemon'un çıkmasını zorlayın:systemctl disable irqbalance.serviceVeya:
irqbalance --oneshotcommon_irq_affinity.shçalıştırılabilir olduğundan emin olun:chmod +x common_irq_affinity.shMellanox NIC ağ portu için IRQ ilişkisini görüntüleyin (örneğin,
eth0):./show_irq_affinity.sh eth0Mellanox aracıyla en iyi aktarım hızı performansı için iyileştirme:
./mlnx_tune -p HIGH_THROUGHPUTNIC'yi ve bağlantı noktasını fiziksel olarak barındıran NUMA düğümüne donanım benzimi ayarlayın:
./set_irq_affinity_bynode.sh `\cat /sys/class/net/eth0/device/numa_node` eth0IRQ benzitesini doğrulayın:
./show_irq_affinity.sh eth0IRQ birleştirme iyileştirmeleri ekleyin:
ethtool -C eth0 adaptive-rx off ethtool -C eth0 adaptive-tx off ethtool -C eth0 rx-usecs 750 tx-frames-irq 2048Ayarları doğrulayın:
ethtool -c eth0NIC hızını doğrulayın. Önceki değişiklikleri yaptıktan sonra, aşağıdaki komutu kullanarak NIC'nin beklentilerinize uygun olduğundan emin olmak için hızını doğrulayın:
ethtool eth0 | grep -i Speed
Gelişmiş çekirdek ve işletim sistemi yapılandırması
En iyi depolama G/Ç performansı için blok aygıtları için Linux çoklu kuyruk zamanlamayı kullanın. Bu zamanlama yöntemi, blok katmanı performansının hızlı katı hal sürücüleri (SSD' ler) ve çok çekirdekli sistemlerle iyi ölçeklendirilmesini sağlar. Linux dağıtımınızın varsayılan olarak etkinleştirilip etkinleştirilmediğini görmek için belgelere bakın.
scsi_mod.use_blk_mq=yile etkinleştirmek için çekirdeği başlatabilirsiniz diğer çoğu durumda,. Linux dağıtımınız için belgelerde bu ayar hakkında daha fazla rehberlik bulunabilir. Bu ayar yukarı akış Linux çekirdeğiyle tutarlıdır.Çok yollu G/Ç, genellikle SQL Server dağıtımlarında kullanıldığından,
dm_mod.use_blk_mq=yçekirdek önyükleme seçeneğini etkinleştirerek aygıt eşleyicinin (DM) çoklu kuyruk hedefiniblk-mqaltyapısını kullanacak şekilde yapılandırın. Varsayılan değer (devre dışı) değeridirn. Bu ayar, temel alınan SCSI cihazlarıblk-mqkullandığında, DM katmanındaki kilitleme iş yükünü azaltır. Çok yollu G/Ç'yi yapılandırma hakkında daha fazla bilgi için Linux dağıtımınızın belgelerine bakın.
Takas dosyasını yapılandırın
Bellek yetersiz sorunlarını önlemek için düzgün yapılandırılmış bir swapfile'a sahip olduğunuzdan emin olun. Swapfile oluşturma ve düzgün boyutlandırma için Linux belgelerinize bakın. Kapsayıcıları çalıştırmayı planlıyorsanız, konak düzeyinde swap alanını etkinleştirin.
Sanal makineler ve dinamik bellek
Sanal makinede Linux üzerinde SQL Server çalıştırıyorsanız, sanal makine için ayrılan bellek miktarını düzelten seçenekleri belirlediğinizden emin olun. Hyper-V Dinamik Bellek gibi özellikleri kullanmayın.
SQL Server yapılandırması
Uygulamanız için en iyi performansı elde etmek için Linux'a SQL Server yükledikten sonra aşağıdaki yapılandırma görevlerini gerçekleştirin.
En iyi uygulamalar
Aşağıdaki uygulamalar tüm Linux üzerinde SQL Server dağıtımları için geçerlidir.
Düğüm ve CPU’lar için PROCESS AFFINITY kullanın
Linux işletim sisteminde, SQL Server için kullandığınız tüm NUMANODE’ler ve CPU’lar (bu genellikle tüm NODE’ler ve CPU’lar için geçerlidir) için PROCESS AFFINITY ayarlamak üzere ALTER SERVER CONFIGURATION kullanın. İşlemci benzimliği, verimli Linux ve SQL zamanlama davranışının korunmasına yardımcı olur. seçeneğini kullanmak NUMANODE en basit yöntemdir. Bilgisayarınızda yalnızca tek bir NUMA düğümü olsa bile kullanın PROCESS AFFINITY .
PROCESS AFFINITY ayarının nasıl yapılacağı hakkında daha fazla bilgi için ALTER SERVER CONFIGURATION makalesine bakın.
Birden çok tempdb veri dosyasını yapılandırma
Linux üzerinde SQL Server yüklemesi birden çok tempdb dosya yapılandırma seçeneği sunmadığından, yüklemeden sonra birden çok tempdb veri dosyası oluşturmayı göz önünde bulundurun. Daha fazla bilgi için bkz. SQL Server tempdb veritabanında ayırma çekişmesini azaltma önerileri.
Gelişmiş yapılandırma
mssql-conf bellek sınırları, cgroup ayarları, Docker kapsayıcı belleği örnekleri ve takas alanıyla ilgili hususlar dahil olmak üzere bellek yapılandırma seçenekleri için bkz. Performans için en iyi yöntemler: Linux'ta SQL Server belleği.