Linux kodola 6.16 izlaidums

Pēc divu mēnešu izstrādes Linuss Torvalds prezentēja Linux 6.16 kodola laidienu. Starp vissvarīgākajām izmaiņām ir: draiveris OpenVPN paātrināšanai, Kexec HandOver mehānisms, piecu līmeņu sākotnējo lapu paraugu iekļaušana x86, DCCP protokola izņemšana, zloop blokdzinējs, iespēja nosūtīt kodu dumpus caur UNIX-sociem, atbalsts atomiskai rakstīšanai XFS, trokšņa apstrādes pārsūtīšana USB ierīcēm, optimizācijas Ext4, virtuālais TPM (Trusted Platform Module) draiveris, pilnīga Device Memory TCP realizācija, atbalsts nosaukumu neiegūtu kanālu io_uring, sagatavošana DRM draivera Asahi integrācijai,

Jaunajā laidienā iekļauti 15924 labojumi no 2145 izstrādātājiem, slāņa izmērs — 50 MB (izmaiņas skārušas 13793 failus, pievienotas 655451 rindiņas koda, izdzēstas 316441 rindiņas). Iepriekšējā laidienā bija 15945 labojumi no 2154 izstrādātājiem, slāņa izmērs — 59 MB. Aptuveni 45% no visām 6.16 versijā iesniegtajām izmaiņām saistītas ar ierīču draiveriem, apmēram 16% izmaiņas ir saistītas ar aparatūras arhitektūrām specifiska koda atjaunošanu, 13% saistītas ar tīkla steku, 4% — ar failu sistēmām un 3% ar kodola iekšējām apakšsistēmām.

Galvenās jaunās funkcijas kodolā 6.16:

  • Disku apakšsistēma, I/O un failu sistēmas
    • Pievienots zloop draiveris, lai izveidotu zonētus blokveida loopback ierīces, kas montētas loop režīmā. Draiveris imitē parasto blokierīču darbību, izmantojot vairākus failus no esošās failu sistēmas (pa vienam failam katrai zonai). Šī iespēja var būt noderīga, lai testētu failu sistēmas, ierīces mapperi un lietotnes, pārbaudot, vai tās atbalsta zonētās ierīces, kas izmanto blokgrupu vai sektoru zonēšanu, kur tiek pieļauta tikai secīga datu pievienošana ar visu bloku grupu atjaunošanu.
    • XFS failu sistēmā ieviests atbalsts atomiskai liela datu apjoma rakstīšanai — tagad var ierakstīt vairākus blokos atomiskajā režīmā (vai nu visi bloki tiks veiksmīgi ierakstīti, vai arī neviens bloks netiks ierakstīts).
    • Ext4 failu sistēmā ir uzlabota "fast commit" mehānisma veiktspēja. Ir pievienota atbalsts lieliem atmiņas lapu fojāliem (large folios) parastiem failiem, kas testos uzlaboja veiktspēju par 37% intensīva sekvenciālā ievadīšanā/izvadē. Ir pievienots atbalsts atomiskām rakstīšanas operācijām, kas aptver vairākus bloķus.
    • Ext2 failu sistēmas draiverī ir pasludināts par novecojusi atbalsts DAX mehānismam, kas nodrošina tiešu piekļuvi FS, apejot lapu kešatmiņu. DAX izņemšana no ext2 draivera plānota gada beigās. Iemesls ir uzskats, ka ext2 draiveris ir stabila etalona īstenošana, kurā nav pieļaujamas specifiskas iespējas, kas nav guvušas pietiekamu izplatību.
    • OrangeFS, UFS, BFS un OMFS failu sistēmas ir pārgājušas uz jaunā API sadalījumu montēšanai.
    • Sysctl ir pievienota vfs_cache_pressure_denom konfigurācija, lai kontrolētu dentry kešatmiņas (iekšējā katalogu elementu attēla) ierakstu skaitu situācijās, kad sistēmā trūkst atmiņas. Jo lielāks ir uzstādītais vērtējums, jo vairāk ierakstu var tikt izstumti no kešatmiņas (mazāk ierakstu paliks kešatmiņā) atmiņas trūkuma gadījumā.
    • Bcachefs failu sistēmā ir pievienota opcija "rebalance_on_ac_only", kas aizliedz veikt pārdali un foniskas saspiešanas operācijas, ja sistēma darbojas no akumulatora. Ir paātrinātas snapshots un ierīču dzēšanas operācijas. Samazināta atmiņas patēriņš montēšanas gadījumā tikai lasīšanas režīmā. Ir pievienota iespēja veikt dažu atkopšanas operāciju pēc kļūmes fonā, neapturot darbu ar FS.
    • Jaudas pārvaldības apakšsistēmai ir atļauts patstāvīgi veikt failu sistēmu un EFI mainīgo sasalšanu gaidošajos un miegainajos režīmos (ja FS jau ir sasalusi ar apstrādātāja palīdzību, atkārtota sasalšana netiek veikta).
    • Ir pievienota iespēja paātrināt EROFS darbu ar Intel procesoros iebūvēto QAT (QuickAssist Technology) paātrinātāju, kas piedāvā līdzekļus, kas ietekmē saspiešanas un šifrēšanas aprēķinu paātrināšanu.
    • NFS ir palielināts maksimālais datu daļas lielums lasīšanas un rakstīšanas operācijām no 1 līdz 4 MB (pārliecināta vērtība ir 1 MB, jo ne visi klienti atbalsta lielāku izmēru).
    • Nepieejami lietotājiem, kuriem ir CAP_SYS_ADMIN tiesības atsevišķā lietotāja identifikatoru nosaukumu telpā (user namespace), bet kuriem nav paplašināto tiesību pamatnosaukumu telpā, ir piešķirta iespēja izmantot fanotify mehānismu, lai uzraudzītu izmaiņas failu sistēmās.
    • Failu sistēmām, kas izmanto FUSE apakštīklu, ir nodrošināta funkcionalitāte, lai kopīgi iztīrītu visus kešatmiņas ierakstus par katalogiem (dentries). FUSE apakštīklā ir iekļauta atbalsta funkcionalitāte lieliem atmiņas lapu svariem.
    • OverlayFS failu sistēmā ir ieviesta atbalsta funkcionalitāte nepriviliģētos nosaukumu telpās datu slāņu izveidošanai, kuru integritāti kontrolē dm-verity modulis. Šī iespēja ļauj kombinēt uzticamus slāņus ar metadatiem un neuzticamus slāņus ar datiem, kas tiek apstrādāti nepriviliģētos nosaukumu telpās.
  • Atmiņa un sistēmas pakalpojumi
    • Ir pievienots KHO (Kexec HandOver) mehānisms, kas ļauj palaist jaunu kodolu no vecā bez sistēmas stāvokļa zuduma. Pirms vadības nodošanas jaunā kodola versijai, svarīgo kodola apakštīklu stāvoklis, izmantojot KHO, var tikt serializēts atmiņas vietā, kas netiks ietekmēta turpmākajās operācijās. Jaunais kodols, uzņemot kontroli, atjauno serializēto stāvokli atpakaļ. KHO pamata tiek attīstīts Live Update Orchestrator (LUO) apakštīklā, kas ļauj restartēt kodolu bez ierīču darbības apturēšanas.
    • Ir pievienots kodola kompilācijas parametrs CONFIG_X86_NATIVE, kas ļauj izmantot kompilācijas opciju "-march=native" optmizācijai, ņemot vērā pašreizējās sistēmas procesora iespējas.
    • Ir ieviesta atbalsta funkcionalitāte Intel APX (Advanced Performance Extension) komandu kopas arhitektūrai, kas nodrošina 16 papildu vispārējās lietošanas reģistrus (papildus 16 esošajiem), ļaujot kodā izmantot mazāk lasīšanas un rakstīšanas darbību uz atmiņu, lai uzlabotu veiktspēju un samazinātu enerģijas patēriņu.
    • Ir pievienots automātiskās atmiņas sadales politikas konfigurācijas režīms NUMA sistēmās, kurā visu mezglu svari tiek pārskaitīti, kad parādās jauna informācija par caurlaidspēju, kad sistēma tiek ielādēta vai karsti pievienojot atmiņu.
    • Futex realizācijā tiek ieviesta atbalsts lokālajai procesu haša tabulai (local futex_hash_bucket), kas, atšķirībā no iepriekš atbalstītās kopējās haša tabulas visiem procesiem, ir lokāla konkrētam procesam un kopīgi izmantojama visām šī procesa pavedienām. Lokālās haša tabulas tiek izmantotas tikai futex operācijām PROCESS_PRIVATE. Turklāt jaunajā laidienā ir pievienots atbalsts opcijām FUTEX2_NUMA un FUTEX2_MPOL, kas ļauj ietekmēt futex izvietojumu atmiņā, tuvāk procesiem, kuri tos izmanto.
    • X86_64 sistēmām ir ieviests pastāvīgs atbalsts piecu līmeņu atmiņas lapu tabulām (CONFIG_X86_5LEVEL parametrs, kas kontrolēja piecu līmeņu tabulu ieslēgšanu, ir noņemts).
    • Intel procesoru enerģijas patēriņa (P-state) parametru pārvaldības draiverī intel_pstate ir pievienots atbalsts uzdevumu plānotāja darbībai, ņemot vērā enerģijas patēriņu (EAS — Energy Aware Scheduling), hibrīdo procesoru gadījumā, kuru iezīmes apvieno augstas veiktspējas un energoefektīvus CPU kodolus, piemēram, Intel Lunar Lake.
    • Sysfs ir pievienoti interfeisi: «/sys/devices/system/cpu/cpuN/cpu_capacity» informācijas iegūšanai par dažādu CPU iespējām hibrīdo procesoru gadījumā un «/sys/devices/system/cpu/cpuidle/intel_c1_demotion» CPU saglabāšanas pārvaldībai augstākā veiktspējas režīmā, pat ja kodols cenšas pārvietot CPU uz zemāku enerģijas patēriņa stāvokli (piemēram, kodols var pieprasīt pāreju uz C6 enerģijas patēriņa stāvokli, bet, ja CPU ir augsta intensitāte, tā programmatūra var atstāt to C1 stāvoklī).
    • ARM64 arhitektūrai ir ieviests atbalsts slinkai uzdevumu izspiešanai (PREEMPT_LAZY, lazy preemption), kas atbilst pilnīgas izspiešanas režīmam («full preemption») reāllaika uzdevumiem (RR/FIFO/DEADLINE), bet aizkavē parasto uzdevumu (SCHED_NORMAL) izspiešanu līdz takta robežai.
    • ARM64 arhitektūrai ir pievienots atbalsts SME (Scalable Matrix Extension) paplašinājumu izmantošanai, kas tiek aktivizēta, izmantojot CONFIG_ARM64_SME parametru.
    • Turpināti pārvietoti izmaiņas no Rust-for-Linux zara, kas saistītas ar Rust izmantošanu kā otro valodu draiveru un kodola moduļu izstrādē (Rust atbalsts pēc noklusējuma nav aktivizēts un neietekmē Rust iekļaušanu obligātajās kompilācijas atkarībās). Moduļiem, kas uzrakstīti Rust valodā, ir nodrošināta iespēja izmantot configfs. Pievienotas abstrakcijas, kas nepieciešamas grafisko draiveru izstrādei. Paplašinātas moduļu alloc, time, str, list, workqueue un page iespējas. Pievienots atbalsts makro „assert!” KUnit bāzes testos. Pievienots abstrakciju kopums, kas palīdz pārvaldīt CPU frekvenci un izmantot ar enerģijas patēriņa vadību saistītos API. Pievienots atbalsts datu struktūrai 'xarray'.
    • RISC-V arhitektūrai tiek pārvietota sistēmas izsaukuma getrandom() īstenošana, kas optimizēta, izmantojot vDSO (virtuālā dinamiskā koplietojamā objekta) mehānismu, ļaujot pārcelt sistēmas izsaukuma apstrādātāju no kodola uz lietotāja telpu un izvairīties no konteksta maiņām. Veiktajos testos optimizācija 17 reizes paātrināja nejaušu skaitļu iegūšanu. RISC-V arī ir īstenots atbalsts vektoru paplašinājumiem Zicbop, Zabha un Svinval, kas tiek izmantoti SiFive procesoros.
    • LoongArch arhitektūras CPU skaita limits sistēmā palielināts no 256 līdz 2048. Pievienots uzdevumu plānošanas SCHED_MC (Multi-core) atbalsts.
    • Pievienota Unix-soketu izmantošanas iespēja failu descriptoru pārsūtīšanai. Lai atspējotu šādu iespēju, programmas var izmantot setsockopt() opciju SO_PASSRIGHTS.
    • Nodrošināta iespēja mappēt riņķa buferi, kas tiek izmantots kodola darbības izsekošanai, lietotāja telpas atmiņā.
    • Koda crash-dump apstrādātāji, kas tiek izmantoti problēmu ziņojuma veidošanai pēc kodola avārijas, tagad var izmantot avārijas lādes LUKS atslēgas, lai saglabātu crash dämpus šifrētās failu sistēmās.
    • Asinhronajā ievades/izvades sistēmā io_uring pievienota operācija IORING_OP_PIPE neizmantoto cauruļu izveidei, kas ir līdzīga sistēmas izsaukumam pipe2, izņemot fixēto failu descriptoru atbalstu.
    • Pievienota kodola komandrindas opcija „rt_group_sched”, lai pārvaldītu grupu realtime uzdevumu (SCHED_RR) izpildes plānotāja iespējošanu. Opcija ir līdzīga RT_GROUP_SCHED konfigurācijai Kconfig.
    • CXL (Compute Express Link) bāzes ierīcēm, kas izmantotas augstas veiktspējas CPU un atmiņas ierīču mijiedarbībai, ir izstrādāta RAS (Reliability, Availability, Serviceability) paplašinājumu atbalsts, kas ļauj īstenot dažādas kļūdu noteikšanas un koriģēšanas shēmas. CXL ļauj pievienot jaunas atmiņas jomas, kuras piedāvā ārējas atmiņas ierīces, un izmantot tās kā papildu resursus fiziskās adresācijas telpā, lai paplašinātu sistēmas operatīvo atmiņu (DDR) vai pastāvīgo atmiņu (PMEM).
    • Nepieciešamā minimālā GCC versija kodola sastādīšanai visām arhitektūrām ir paaugstināta līdz GCC 8 zariem. Tagad kodola sastādīšanai ir nepieciešama arī vismaz versija binutils 2.30.
    • Tika noņemta sistēmas izsaukums uselib(), kas jau ilgi tika atzīts par novecojušu, un tā vietā kopshared library piekļuvei tiek izmantots mmap().
  • Virtualizācija un drošība
    • Tika pievienots sākotnējais atbalsts Intel TDX (Trusted Domain Extensions) mehānisma izmantošanai, lai aizsargātu viesu sistēmas, kas darbojas uz KVM hipervizora, no viesu sistēmas administratoru iejaukšanās un fiziskām uzbrukumiem ekipējumam. Aizsardzība tiek nodrošināta, šifrējot atmiņu. virtuālo mašīnu.
    • Tika pievienots virtuālais TPM (Trusted Platform Module) draiveris, kas ļauj virtuālajām mašīnām mijiedarboties ar TPM ierīcēm, ko emulē SVSM (Secure VM Service Module).
    • Tika atjaunota iespēja izmantot GCC spraudni randstruct, kas randomizē datu struktūru izkārtojumu kompilācijas laikā, lai apgrūtinātu ievainojamību izmantošanu.
    • Tika pievienota IMA (Integrity Measurement Architecture) tehnoloģijas izmantošanas iespēja, lai pārbaudītu integritāti, palaižot jaunus kodolus, izmantojot sistēmas izsaukumu kexec.
    • Tika veikti pasākumi, lai samazinātu SELinux ietekmi uz veiktspēju. Lai paātrinātu darbu, tika pievienota kešatmiņa ar piekļuves pārbaudes rezultātiem katalogiem. Genfscon noteikumos tika pievienota masku izmantošana.
    • Efi saskarsmē ar kodu tika sniegta iespēja iekļaut SBAT (UEFI Secure Boot Advanced Targeting) sadaļu ar metadatiem par atsauktām boot komponentu versijām.
    • Lejupielādējamajos moduļos tika veikta sadaļas «.static_call_sites» pāreja uz tikai lasāmo režīmu pēc inicializācijas pabeigšanas.
    • 64 bit ARM sistēmām KVM hipervizorā ir ieviesta atbalsts ieliktajai virtualizācijai (pēc noklusējuma atslēgts).
    • KVM hipervizorā ir pasludināts stabils atbalsts RISC-V arhitektūrai.
  • Tīkla subsistēma
    • Iekļauts ovpn draiveris, kas būtiski paātrina OpenVPN veiktspēju, pārvietojot šifrēšanas, pakotņu apstrādes un sakaru pārvaldības operācijas uz Linux kodolu. Draiveris ļauj izvairīties no pārslēgšanās izmaksām, optimizējot darbu, tieši piekļūstot kodola iekšējām API un novēršot lēnu datu pārraidi starp kodolu un lietotāja telpu (šifrēšana, atšifrēšana un maršrutēšana tiek veikta moduli bez datu plūsmas sūtīšanas uz lietotāja telpu apstrādātāju).
    • Device Memory TCP mehānismā ir pievienots atbalsts datu nosūtīšanai no ierīces atmiņas (TX ceļš). Iepriekš, lai atvieglotu Device Memory TCP integrāciju kodolā, funkcionalitāte bija ierobežota tikai uz datu pieņemšanu (RX ceļš). Device Memory TCP ļauj izmantot tīkla soketus tiešai ierīces atmiņas satura nosūtīšanai pa tīklu (zero-copy režīms), kā arī tiešai tīkla paketu satura ievietošanai ierīces atmiņas jomā saņēmēja pusē. Pārsūtītie dati tiek nosūtīti no tīkla kartes uz perifērās ierīces atmiņu (DMABUF), piemēram, video atmiņu GPU, vai tieši no ierīces atmiņas uz tīkla karti, apejot CPU, bet paketa galvenes nonāk parastajos kodola buferos.
    • Iespēja sūtīt core dump saturu caur AF_UNIX soketu ir nodrošināta, ļaujot lietotāja telpā izveidot drošākas core dump apstrādātājus, kas nav atkarīgi no kodola privileģēto procesu izsaukumiem.
    • Atbalsts DCCP (Datagram Congestion Control Protocol) tīkla protokolam ir izņems, jo tas nav guvis izplatību un piecus gadus palicis kodolā bez apkopšanas. DCCP izņemšana no kodola novērsīs šķēršļus, kas traucē pārdizainēt inet_connection_sock datu struktūru, lai uzlabotu TCP staka efektivitāti. Atbalsts netfilter moduļiem DCCP pakotņu filtrēšanai ir saglabāts.
    • Lai vienkāršotu kļūdu apstrādi, lietojot soketus, SO_PEERPIDFD, kodols tagad var nodot pidfd jau pabeigtām procesiem (pidfd ir saistīts ar konkrētiem procesiem un, atšķirībā no pid, netiek atkārtoti piešķirts).
    • Izmantojot BPF, tagad var izveidot paketu apstrādes rindas (qdiscs) tīkla stekā, lai ietekmētu tīkla paketu apstrādes secību.
    • Tīkla failu sistēmā AFS tiek izmantots GSSAPI (Generic Security Services API) savienojumu šifrēšanas pārvaldībai ar serveriem YFS un OpenAFS.
    • Veiktas būtiskas optimizācijas. Pārstrādāta bloķēšanas organizācija IPv6 maršrutu tabulām (dažas darbības ar maršrutiem tagad tiek veiktas līdz 3 reizes ātrāk). Paātrināta programmatiskā crc32c kontrolsummu aprēķināšana. GRO dzinējs tunelētam UDP satiksmei ir paātrināts par 10%. Uzlabota automātiskā iestatīšana pieņemšanas buferim TCP un palielināti pēc noklusējuma piemērojamie ierobežojumi (veiktajos testos caurlaidība modes plūsmām 200Gbs kanālā palielinājās par 60%).
    • Netfilter pievienota iespēja izmantot maskas tīkla ierīču nosaukumos, kuras tiek izmantotas netdev un flowtable. Infrastruktūrā nft trace integrēta informācija par savienojumu uzraudzību (conntrack). Paātrināta savienojumu uzraudzības tabulu (conntrack) iegūšana caur procfs.
  • Aprīkojums
    • Pievienota atbalsta funkcionalitāte audio plūsmu apstrādes pārsūtīšanai uz USB ierīču pusi (USB audio offload). Šis mainījums ievērojami samazina portatīvo ierīču enerģijas patēriņu, turpinot audio plūsmas apstrādi, kamēr pārējā sistēma ir miega režīmā. Iepriekš Android platformas kodolos tika nodrošināta specifiska audio offload apstrāde USB ierīcēm, bet tagad galvenajā kodolā ir parādījusies universāla izpilde, ko var izmantot jebkuri projekti.
    • Turpināta Nova draivera komponentu integrācija NVIDIA GPU, kas aprīkoti ar GSP aparatūras programmām, sākot ar NVIDIA GeForce RTX 2000 sēriju, kas balstīta uz Turing mikroarsitektūru. Draiveris rakstīts Rust valodā. Papildus iepriekšējā laidiena pievienotajai nova-core komponentai, kas īsteno pamatabstrakcijas pār GSP aparatūras programmām, versijā 6.16 iekļauta sākotnējā DRM draivera nova-drm (Direct Rendering Manager) implementācija, lai mijiedarbotos ar GPU no lietotāja telpas.
    • Uzsākts Asahi DRM draivera virzības process Apple AGX GPU, kas tiek izmantoti Apple Silicon mikroshēmās. Draiveris rakstīts Rust valodā. Pašreizējā posmā kodolā iekļautas tikai galvene faila UAPI no Asahi draivera, kas nepieciešams Mesa, bet galvenais Asahi draivera kods tiks integrēts vēlāk.
    • Draiverī Nouveau pievienota atbalsta funkcionalitāte NVIDIA Hopper un Blackwell GPU sērijām.
    • Turpināta darba attīstība pie Intel Xe arhitektūras DRM draivera (Direct Rendering Manager), kas tiek izmantots Intel Arc grafiskajās kartēs un integrētajā grafikā, sākot ar Tiger Lake procesoriem. Pievienota iespēja izmantot dažādus aparatūras programmu failus dažādiem Intel GPU ģimeņu modeļiem.
    • Draiverī AMDGPU ieviests atbalsts «usermode queue» mehānismam, kas ļauj izveidot savas darba rindas lietotāja telpā un nosūtīt tās tieši uz GPU bez sazināšanās ar kodola plānotāju. Atbalsts «usermode queue» iekļauts GPU Navi 4X un GFX 12.
    • Pievienots atbalsts Intel WCL (Whiskey Lake), AMD ACP 7.x (Audio Co-Processor), Cirrus Logic CS35L63 un CS48L32, Everest Semiconductor ES8375 un ES8389, Pioneer DJM-V10, Longsoon-1 AC’97, NVIDIA Tegra264, Richtek ALC203, RT9123 un Rockchip SAI, kā arī jaunām Intel AVS platformām.
    • Pievienots atbalsts ARM platformām, SoC un ierīcēm: Samsung Exynos7870, Qualcomm Snapdragon X1P42100, Qualcomm MSM8926, RK3562, NXP i.MX94, Renesas RZ/V2N, Amlogic S6/S7/S7D, WonderMedia wm8950, Amlogic s805y, Allwinner A523, Toradex Verdin AM62P, ROCK 5B+, Nitrogen8M Plus, Retronix R-Car V4H Sparrow Hawk, MT8186 Ponyta Chromebook, VIA APC Rock/Paper, Renesas rz/t2h, ASUS Transformer Pad LTE TF300TL, LG Nexus 4, Google Pixel 4a, Raspberry Pi 2.
    • Izņemts draiveris video ieraksta kartēm, kas balstītas uz STA2X11 mikroshēmām.

Ņemot vērā, Latīņamerikas Brīvā programmatūras fonds izstrādāja pilnīgi brīvu Linux 6.16 kodolu - Linux-libre 6.16-gnu, kas attīrīts no iekļautajām programmatūrām un draiveriem, kuri satur brīvu komponentu vai koda fragmentu, kuru izmantošanu ierobežo ražotājs. Versijā 6.16 ir neitralizēta blobu ielāde jaunos Intel qat 6xxx crypto, ST vd55g1 sensora, ath12k AHB wifi, Aeonsemi AS21xxx un MediaTek 25Gb Ethernet draiveros. Ir veikta blobu nosaukumu attīrīšana dts failos (devicetree) Qualcomm un MediaTek ARM mikroshēmām. Atjaunināts blobu attīrīšanas kods Nova Core, Nouveau, Realtek r8169 Ethernet, Qualcomm Iris, Venus, Mediatek mt7996 wifi, Qualcomm ath11k un ath12k wifi, Texas Instruments tas2781 un Renesas R-Car gen4 PCIe draiveros.

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster