Dlaczego twój kod nie powinien używać 100% procesora? [Zamknięte]


42

Mówię konkretnie o programie C # .NET 4 działającym w systemie Windows XP lub nowszym, ale ogólne odpowiedzi są również dopuszczalne.

Załóżmy już zoptymalizowany i wydajny program. Problem polega wyłącznie na skutkach dużego zużycia procesora na sprzęcie i na tym, czy program o dużym zużyciu powinien być ograniczany w celu zmniejszenia zużycia, a nie na tym, czy moja implementacja jest wydajna.

Współczesny kolega zasugerował, że nie powinienem dążyć do 100% wykorzystania procesora w moich procesach ładowania danych, ponieważ „nowoczesne procesory są tanie i szybko ulegają degradacji przy 100% procesorze”.

Czy to prawda? A jeśli tak, to dlaczego? Wcześniej miałem wrażenie, że 100% użycie procesora jest lepsze w przypadku intensywnej lub długiej operacji i nie mogłem znaleźć żadnych poważnych źródeł na ten temat.


6
Zakładając, że twoja aplikacja jest jedyną rzeczą działającą na urządzeniu, a ściślej mówiąc, 100% wykorzystanie procesora nie jest tak naprawdę złe, ale raczej może wskazywać, że jest coś, co możesz zrobić lepiej. Nie pracowałem dużo z aplikacjami komputerowymi, ale na przykład dla aplikacji internetowych nigdy nie widziałem aplikacji, która maksymalizuje obciążenie procesora, a kod wykorzystujący te cykle był naprawdę optymalny. Zawsze coś jest nie tak. Wynika to jednak z faktu, że w Internecie często jesteśmy związani z operacjami we / wy, więc problem z procesorem wydaje się nieodpowiedni. Jestem pewien, że Twoja aplikacja jest inna.
Brandon

7
Również różne systemy operacyjne różnie obsługują ten przypadek. Na przykład mój system Windows działa strasznie, jeśli procesor jest w 100% wykorzystany. Z drugiej strony widziałem, jak serwer Linux działa na 100% procesorze przez kilka dni z rzędu i było dobrze. (Chociaż wydaliśmy poprawkę kilka dni później.)
Brandon

17
Chcesz wykonywać pracę tak szybko, jak to możliwe, bez nadmiernego marnotrawstwa. Jeśli używasz 100% procesora do wykonywania przydatnych obliczeń, to dobrze. Jeśli użyjesz 100% CPU w bezużytecznych pętlach, jest to strata.
nwp

10
Zapłaciłeś za to wszystko. Wykorzystaj to wszystko.
Brian Hooper

4
To pytanie wydaje się być nie na temat, ponieważ dotyczy elektroniki, a nie programowania.

Odpowiedzi:


59

Jeśli chłodzenie jest niewystarczające, procesor może się przegrzać. Ale wszystkie (przynajmniej wszystkie współczesne procesory komputerowe) mają różne mechanizmy ochrony termicznej, które dławią szybkość zegara lub, w ostateczności, wyłączają się.

Tak, na zakurzonym laptopie 100% obciążenia procesora może powodować przejściowe problemy, ale nic się nie zepsuje ani nie „pogorszy” (cokolwiek to oznacza).

W przypadku problemów związanych z procesorem właściwym rozwiązaniem jest 100% obciążenie procesora.

Jeśli chodzi o czas reakcji aplikacji (UI), jest to odrębna koncepcja niż wykorzystanie procesora. Całkowicie możliwe jest, że aplikacja nie odpowiada, która wykorzystuje 1% procesora lub aplikacja responsywna, która wykorzystuje 100% procesora. Reaktywność interfejsu użytkownika sprowadza się do ilości pracy wykonanej w wątku interfejsu użytkownika oraz priorytetu wątku interfejsu użytkownika w porównaniu do innych wątków.


3
a system operacyjny może nawet wymusić chłodzenie rdzeni
maniak zapadkowy

8
Myślę, że prawdziwą odpowiedzią jest to, że większość procesów nie jest związana z procesorem, ale zamiast tego jest związana z We / Wy, dlatego generalnie żyjemy w świecie, w którym 100% użycie procesora jest nieprawidłowe, przynajmniej w przypadku obliczeń „ogólnych / ogólnych”.
windfinder

4
@windfinder Powiedziałbym, że w przypadku „obliczeń” osiągnięcie 100% jest dość standardowe, ale tylko o ile „obliczenia” mają coś wspólnego z matematyką :) na przykład przetwarzanie zapytań MySQL nie jest dla mnie obliczeniami;)
yo '

@tohecz - W tym sensie, że użyłem go, obliczenia oznaczają po prostu czas procesora. Po prostu sprzeczamy się tutaj terminologią, dla mnie wszystko, co robi procesor, to obliczenia („oblicza”). Jako badacz danych powiem również, że większość matematyki jest również związana z operacjami wejścia / wyjścia (poza najbardziej trywialną matematyką). Dużo czasu spędzasz w świecie matematyki, szukając sposobu na wydajne kompresowanie / przesyłanie strumieniowe danych do procesora, aby utrzymać maksymalne wykorzystanie procesora (oczywiście minimalizując nieefektywność pamięci podręcznej).
windfinder

4
Anegdota na temat „zakurzonych laptopów”: do moich eksperymentów magisterskich użyłem wówczas 4-letniego laptopa jako biegacza. 24/7 100% wykorzystania procesora przez około 3 miesiące . Następnie wspomniany laptop został zdelegowany do roli serwera jeszcze przez 4 lata, zanim ostatecznie zrezygnował z ducha (prawdopodobnie z powodu już uszkodzonego problemu graficznego).
mikołak

15

Programy Windows (winforms / WPF) powinny przez cały czas pozostawać responsywne. Dzięki naiwnej implementacji procesu, który wykorzystuje 100% zasobów procesora, zbyt łatwo jest sprawić, że Twój program, a nawet system, wydaje się powolny i zawieszony.

Przy dobrej implementacji (na przykład: użyj osobnego wątku o niższym priorytecie) nie powinno to stanowić problemu.

Nie powinieneś martwić się wcześniejszym zerwaniem procesora.


3
Oczywiście programy wykonujące obliczenia długoterminowe prawdopodobnie nie powinny być aplikacjami winforms / wpf, ale raczej zadaniami wsadowymi bez interfejsu użytkownika. To sprawia, że ​​są one prostsze, ponieważ nie muszą dbać o responsywny wątek interfejsu użytkownika i pozwalają na ich uruchomienie za pomocą harmonogramu zadań i tym podobnych. Jeśli potrzebny jest interfejs użytkownika, nadal polecałbym aplikację uruchamiającą w całkowicie oddzielnym procesie (który może dość łatwo reagować; wystarczy, aby uniknąć blokowania oczekiwania na komunikat o stanie z zadania wsadowego).
Jan Hudec

15

Zasadniczo nie ma nic złego w programie wykorzystującym 100% procesora , który faktycznie wykonuje użyteczną pracę i nie traci czasu na nic ważniejszego . Jeśli dana platforma sprzętowa jest w stanie np. Stale wykorzystywać 100% procesora przez jedną sekundę, zanim będzie musiała powrócić do 50%, aby uniknąć przegrzania, generalnie lepiej jest dla aplikacji, która ma użyteczną pracę do wykonaniaaby działać tak szybko, jak to możliwe, i pozwolić procesorowi lub systemowi operacyjnemu obsłużyć wszelkie niezbędne funkcje dławienia, niż aby aplikacja zgadła, jak szybko powinna „działać”. Jeśli aplikacja lub wątek ma pracę o niskim priorytecie, która byłaby przydatna, ale nie zawsze krytyczna, może być pomocne dla systemu operacyjnego ograniczenie użycia procesora o niskim priorytecie do 50%, aby jeśli procesor musiał to zrobić coś szybko będzie gotowe do „sprintu” przez sekundę, ale aplikacja nie powinna martwić się o takie rzeczy poza żądaniem niskiego priorytetu wątku.

Największe sytuacje, w których użycie 100% procesora jest złe, gdy:

  • Aplikacja jest zajęty, oczekiwanie na niektóre zdarzenia, które nie będzie przyspieszona uporczywego odpytywania [i faktycznie może być opóźniony, jeżeli wysiłek zmarnowany sprawdzeniu, czy zadanie zostało wykonane zajmuje zasobów procesora, które w przeciwnym razie mogłyby być wydatkowane robi zadanie].

  • Aplikacja zbyt często przerysowuje ekran. Definicja „zbyt często” będzie w pewnym stopniu zależeć od charakteru urządzenia wyświetlającego i wyświetlanej treści. Jeśli sprzęt wyświetlający może wyświetlać 120 klatek na sekundę, mogą wystąpić przypadki, w których animacja może być wyświetlana przy 120 klatkach na sekundę bez dodawania rozmycia ruchu, ale nie może być wyświetlana czysto przy niższej liczbie klatek na sekundę bez jej dodania. Jeśli renderowanie klatki z rozmyciem w ruchu zajęłoby znacznie więcej czasu niż renderowanie bez niej, to renderowanie przy 120 klatkach na sekundę na sprzęcie, który ją obsługuje, może w rzeczywistości nie być bardziej kosztowne niż renderowanie z mniejszą liczbą klatek na sekundę przy rozmyciu ruchu. [Prosta sytuacja: koło z 29 szprychami, obracające się z jednym obrotem na sekundę. Przy 120 fps koło wydaje się obracać z odpowiednią prędkością i kierunkiem; przy 60 fps,

Ten pierwszy jest wyraźnie rozpoznawalny jako zły. Drugi jest nieco bardziej subtelny. Jeśli kierujesz reklamy na platformę mobilną, w niektórych przypadkach pożądane może być umożliwienie użytkownikom wybrania pożądanej liczby klatek na sekundę animacji, ponieważ niektórzy użytkownicy mogą nie martwić się o czas pracy baterii, ale chcieliby animacji o najlepszej jakości, podczas gdy inni zaakceptują niższą jakość animacja w zamian za lepszą żywotność baterii. Zamiast zmuszać aplikację do odgadnięcia, gdzie powinien być kompromis, pomocne może być dostosowanie go przez użytkownika.


10

„nowoczesne procesory są tanie i szybko ulegają degradacji przy 100% procesorze”.

Nie sądzę, żeby ktokolwiek faktycznie zajął się „poniżającą” częścią tego pytania. Układy scalone ulegną degradacji, gdy temperatura matrycy przekroczy ograniczenia producenta. Układy scalone są zwykle zaprojektowane do pracy w temperaturze do 125 ° C, chociaż każde zwiększenie o 10 ° skraca żywotność o 50%

Procesory nie zawsze miały regulację termiczną. Następnie niektóre AMD Durons napotkały problemy (podobno można było je zniszczyć, jeśli uruchomiono je bez radiatora). Teraz wszystkie procesory komputerowe będą miały wbudowane czujniki temperatury, które zwracają sygnał do zegara procesora i spowalniają zegar, aby zapobiec uszkodzeniom. Może się więc okazać, że Twój program wykorzystuje 100% dostępnego procesora, ale procesor działa tylko z 75% jego prędkości znamionowej, ponieważ jego chłodzenie jest niewystarczające.

W programie użytkownika nie ma odpowiedniego miejsca do zarządzania zużyciem procesora. Zasadniczo twój program powinien przełączać się między robieniem rzeczy tak szybko, jak to możliwe, a oczekiwaniem, zawieszeniem, na wejście lub dostęp do dysku. Jeśli to możliwe, powinieneś unikać zajętości i blokowania, ale w ramach uprzejmości reszty systemu.

Zarówno Windows, jak i Linux mają systemy „govenor” procesora, które będą zarządzać wydajnością i temperaturą. Ponieważ odbywa się to na poziomie systemu operacyjnego, może uwzględniać całkowite zużycie procesora przez system. System operacyjny jest odpowiedzialny za zarządzanie sprzętem i zapobieganie jego niewłaściwemu użyciu przez programy użytkownika. Obowiązkiem właściciela sprzętu jest utrzymanie wentylatorów w czystości i poprawienie ich działania, a producent to przede wszystkim montaż odpowiednich radiatorów i wentylatorów.

Istnieje kilka przypadków, w których urządzenia mają niewystarczające chłodzenie, ale powódź zwrotów uczy producentów, aby tego nie robić.


To wideo eksplodującego AMD Durona jest prawdopodobnie fałszywe. Twoje oświadczenie dotyczące regulacji termicznej jest nadal aktualne.
Sam

1
Hm, wyjąłem go, ponieważ widzę w Google dość sporo twierdzeń, że to podróbka.
pjc50,

3
Możliwe jest przegrzanie nowoczesnego procesora Intel Core przez napisanie kodu, który popycha silnik SSE i celowo wyłącza dławienie procesora w systemie operacyjnym. Wydaje się, że producenci (nawet sam Intel) projektują wymagania termiczne w oparciu o założenie, że nie jest normalne (możliwe?) Zmuszanie procesora do ciągłego obliczania deklarowanych 4 klap na cykl zegara. Kiedy komuś uda się napisać kod, który to robi, jego procesor zaczyna się przegrzewać. Zobacz: stackoverflow.com/questions/8389648/…
slebetman

^ „podobno można było zniszczyć jeden, jeśli uruchomiono go bez radiatora” - „osobiście potwierdziłem”, że wcześniej K7 można było zniszczyć bez radiatora .. ; to prawie 2 dekady temu !!
user2864740

3

Aby zagrać w adwokata diabła: W pewnym sensie program, który nie może osiągnąć 100% wykorzystania, może spowodować gorsze zużycie: O ile nie zostanie zawieszony w oczekiwaniu na naciśnięcie klawisza, istnieje prawdopodobieństwo, że przez większość czasu jest zawieszony w oczekiwaniu na We / Wy dysku. Dyski są (wciąż zwykle) dużymi urządzeniami mechanicznymi, które podlegają zużyciu mechanicznemu lub ryzyku wstrząsów / efektów żyroskopowych podczas ruchu, nie wspominając o zużyciu energii.


W tym przypadku jest to po prostu złożony proces na dużym zestawie danych (w pamięci), co zajmuje kilka minut. Ale to zdecydowanie dobra uwaga dla innych czytelników.
Nick Udell,

3

„Nowoczesne procesory są tanie i szybko ulegają degradacji przy 100% procesorze”.

Nie musisz się w ogóle martwić o „degradację procesora”. Nowoczesne procesory nie są gorszej jakości niż w dawnych czasach.

Wytwarzanie procesorów jest bardzo drogie (i staje się coraz droższe co kilka lat), niektóre miliardy na budowę nowej fabryki nie są rzadkością (patrz link).

http://en.wikipedia.org/wiki/Semiconductor_fabrication_plant

Koszty produkcji procesora zależą co najwyżej od nie. wyprodukowanych jednostek. Jest to dobrze znany fakt w gospodarce. Właśnie dlatego mogą być sprzedawane (relatywnie) „tanie”. (Myślę, że link nie jest konieczny)

Mogę wymienić wiele powodów, dla których uważam, że współczesne procesory mają wyższą jakość niż w „dawnych czasach”.

Ale tylko najważniejsze: zalety w testowaniu. Nowoczesna elektronika jest „zaprojektowana do testów”. Niezależnie od tego, czy chodzi o oprogramowanie czy sprzęt, szeroki wachlarz wyceny testów w porównaniu do prawie wszystkiego innego nie jest tak stary. W przypadku procesorów są nawet przeprowadzane testy formowania różnych rodzajów cen i częstotliwości, np. Najlepsze procesory sprzedawane są z najwyższymi częstotliwościami. Mimo to tańsze procesory bardzo często są w stanie pracować z wyższą częstotliwością niż sprzedawane - są sparaliżowane tylko dlatego, że producent chce sprzedawać niektóre procesory „wysokiego poziomu” o wyższych cenach.

(Z drugiej strony, oczywiście jest więcej możliwych błędów dla procesora z ponad 1,5 miliardem tranzystorów jak zwykle w dzisiejszych czasach niż z tysiącem tranzystorów procesora z lat siedemdziesiątych. Ale to nie stoi w sprzeczności z moją odpowiedzią IMO. Procesory ogólnie zwykle mają wiele znanych błędów, przynajmniej w mikrokodzie, ale nie jest to tutaj przedmiotem).

Jest jeszcze więcej powodów, aby nie martwić się degradacją procesora w twoim programie:

  • Pierwszym powodem jest to, że współczesne procesory zmniejszają częstotliwość lub przepustnicę, jeśli stają się zbyt gorące.

    Powinno być jasne, że jeśli wykorzystasz procesor w 100% 24/7 przez cały rok, zwykle umrze wcześniej niż procesor używany tylko co drugi tydzień przez godzinę. Nawiasem mówiąc, dotyczy to również samochodów. Tylko w takich przypadkach myślałem o wykorzystaniu procesora i potencjalnym śnie.

  • Drugim powodem jest to, że naprawdę bardzo trudno jest napisać program, który wykorzystuje 100% procesora z systemu operacyjnego (np. W systemie Windows). Poza tym nowoczesne procesory (zwykle) mają co najmniej 2-4 rdzenie. Tak więc tradycyjny algorytm, który zwykle wykorzystuje 100% procesora jednordzeniowego, ma teraz tylko 50% na procesorze dwurdzeniowym (uproszczony, ale widoczny w rzeczywistych scenariuszach).

  • Co więcej, system operacyjny kontroluje procesor, a nie program, więc jeśli istnieją inne aplikacje o tym samym lub wyższym priorytecie (co jest ustawieniem domyślnym), twój program otrzymuje tylko tyle procesora, ile to możliwe, ale inne aplikacje nie będą głodować. (Oczywiście jest to tylko uproszczona teoria i oczywiście wielozadaniowość systemów Windows, Linux i innych nie jest idealna, ale ogólnie uważam, że to prawda).

„Wcześniej miałem wrażenie, że 100% użycie procesora jest lepsze w przypadku intensywnej lub długiej operacji.”

Tak, zostań przy tym. Ale na przykład, jeśli czekasz i zapętlasz inny proces, innymi słowy nic nie robiąc, nie byłoby źle, gdybyś używał Thread.Sleep () przez kilka milisekund w tej pętli, dając dodatkowy czas innym. Chociaż nie jest to konieczne dla dobrego systemu wielozadaniowego, rozwiązałem niektóre problemy z tym np. Dla Windows 2000. (To NIE znaczy oczywiście, że używasz Sleep () w obliczeniach na przykład ..


3
Chociaż ta odpowiedź jest dziś prawdziwa, istnieją obawy o przyszłość. Kiedyś „półprzewodnik” oznaczał najwyższą niezawodność, ale teraz mamy pamięć flash MLC, która w niektórych przypadkach jest oceniana tylko na 1000 cykli kasowania na blok. Jak długo, aż kurczące się rozmiary matryc przyniosą podobne zjawiska dla procesorów, które muszą działać na 100% bez przerwy?
Michael

2
@Michael, procesory jednak nie mutują i zapisują się w nietrwałej pamięci - ale nadal rozumiem, co próbujesz powiedzieć.
Peter

3

Taka degradacja jest teoretycznie możliwa i nazywa się ją „ elektromigracją ”. Elektromigracja jest zależna od temperatury i przyspiesza wraz ze wzrostem temperatury. To, czy jest to praktyczny problem dla współczesnych procesorów, jest przedmiotem dyskusji. Nowoczesne praktyki projektowania VLSI kompensują elektromigrację, a chipy są bardziej podatne na awarie z innych powodów.

To powiedziawszy, elektromigracja zachodzi nawet przy normalnych obciążeniach i temperaturach , ale jest ona na tyle powolna, że ​​dobrze zaprojektowany układ albo przestaje działać znacznie wcześniej, zanim zawiedzie, albo zawodzi najpierw przez inny mechanizm.

Szybkość elektromigracji zależy od temperatury chipa, a żywotność podwaja się dla każdego (bardzo z grubsza) 10 ° C. Jest to w rzeczywistości podstawa testu o nazwie „HTOL” (żywotność w wysokiej temperaturze), który mierzy, ile czasu zajmuje chipowi umarcie w, powiedzmy, 125 ° C. Układ pracujący w temperaturze 125 ° C ulegnie awarii około 100 razy szybciej niż układ pracujący w temperaturze 55 ° C, więc jeśli zostanie zaprojektowany na co najmniej 10 lat w temperaturze 55 ° C, układ może ulec awarii w ciągu 1 miesiąca w temperaturze 125 ° C. Jeśli działałby w czymś bardziej rozsądnym, takim jak 85 ° C, taki układ nadal zawodziłby co najmniej 5-10 razy szybciej niż zostałby zaprojektowany.

Oczywiście procesory są zwykle projektowane z myślą o wyższych temperaturach, dlatego mogą zwykle pracować przez lata w 85 ° C 24/7 przy 100% obciążeniu. Sugeruję więc, abyś nie przejmował się „zużyciem” procesora, a jedynie martwił się, czy 100% obciążenia jest odpowiednie z punktu widzenia inżynierii oprogramowania.


Znalezienie tego słowa prowadzi do wyszukiwania z wieloma wynikami , które dobrze czytają w sieci SE ... z których wiele znajduje się w Electronics.SE i SuperUser.

1

Jeśli uruchamiasz swój kod na klientach, 100% wykorzystanie procesora oznacza, że ​​komputery klienckie w tym czasie nie mogą być używane do niczego innego niż zadania o wyższym priorytecie. Ponieważ większość aplikacji zwykle ma domyślny priorytet, użytkownicy korzystający z tych komputerów zauważą zawieszenie komputera i nie będą mogli tego zrobić na innych komputerach. Nawet jeśli mówimy o krótkich seriach, użytkownicy pracujący nad czymś nadal to zauważą.

Jak powiedzieli inni, byłeś dość skryty w kwestii konfiguracji, więc nie mogę tego powiedzieć na pewno. Ale jeśli Twoimi klientami są komputery stacjonarne, trzymaj się z dala od 100% wykorzystania procesora. Nie z powodu degradacji procesora, ale dlatego, że nie jest dobrą formą zakłócanie pracy użytkowników.


6
Windows działa w ten sposób. W Linuksie i wielu innych systemach wątki, które na coś czekały (dane wejściowe użytkownika) automatycznie mają pierwszeństwo przed wątkami, zużywając przydzielony czas, więc programy interaktywne pozostają responsywne, nawet jeśli nie grasz priorytetami.
Jan Hudec

2
@ JanHudec Windows to robi. superuser.com/questions/194223/…
NtscCobalt

@NtscCobalt: Tak. To, co najwyraźniej nie jest, to Windows CE. System Windows ma poważne problemy za każdym razem, gdy proces jest obciążony dyskiem, ale to oczywiście coś innego (obsługa dysku jest ogólnie słaba w systemie Windows).
Jan Hudec

1

Sytuacja jest następująca: masz jakiś kod, który działa przez pięć godzin przy użyciu 100% wszystkich procesorów, który jest zoptymalizowany tak bardzo, jak to możliwe, właściciel maszyny jest w porządku, ponieważ maszyna jest bezużyteczna przez pięć godzin, a twój kolega twierdzi, że lepiej byłoby uruchomić kod w ciągu 6 godzin przy użyciu 83,33% wszystkich procesorów, ponieważ powoduje to mniejsze zużycie komputera.

To zależy od używanego komputera. Wiem, że producent komputerów odmówił naprawy gwarancyjnej w okresie gwarancyjnym na tanich komputerach domowych, które były używane w warunkach naukowych przez całą dobę. Wyraźnie chcieli, aby klient kupił droższe serwery lub komputery „biznesowe”. Czy udało im się odnieść sukces, nie wiem.

Każdy komputer Mac, którego posiadam, ma w pewnym momencie swojego kodu uruchomieniowego 100% użycie procesora przez kilka dni. W jednym przypadku musiałem wyłączyć wyświetlacz, ponieważ nie miałem oryginalnej ładowarki do laptopa, a dzięki 4 rdzeniom i hiper-wątkom zużywało ono więcej energii niż dostarczona ładowarka - więc bateria się wyczerpała, a kiedy osiągnęła 5 procent komputer spowolnił taktowanie zegara, aż bateria osiągnęła 10%! (Przy wyłączonym wyświetlaczu działał z pełną prędkością przez kilka dni). W żadnym przypadku nie występują żadne niepożądane skutki.

Dzięki dobrze zaprojektowanemu komputerowi masz rację. Przy źle zaprojektowanym, tanim komputerze twój kolega może mieć rację. Z drugiej strony możesz wziąć pod uwagę koszt czasu oczekiwania w porównaniu z kosztem zakupu komputera zastępczego.


0

Jeśli możesz, ustaw kod o niższym priorytecie i upewnij się, że wątek obciążający procesor jest oddzielony od GUI. Wtedy możesz mieć 100% wykorzystania, ale użytkownik zawsze może wykonywać inne zadania i pozostać responsywny. Procesor sam w sobie jest zaprojektowany tak, aby działał przez chwilę w 100%, inaczej nie zostałby zwolniony. O ile użytkownik końcowy nie dokona poważnych i niebezpiecznych modyfikacji swojego sprzętu, nie można niczego uszkodzić.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.