2014-06-28 12 views
5

Czytam TLPI (The Linux Programming Interface) i wydaje się, że używają 1024 jako standardowego rozmiaru bufora do operacji na plikach. Zastanawiam się, dlaczego ten rozmiar został wybrany. Czy istnieje "najlepszy" rozmiar pliku?W jaki sposób wybierane są rozmiary buforów?

Opracowanie i miejmy nadzieję zdobycie dalszych informacji: w jakich sytuacjach użycie czegoś 512 lub 2048 bajtów mogłoby coś zepsuć? Zakładam, że jeśli 1024 jest bezpieczny, 512 jest również bezpieczny, ale po prostu wolniejszy, ponieważ będziesz musiał przenieść dane z dwukrotnie większą liczbą kroków. Tak więc, jeśli moje myślenie jest poprawne, im większy rozmiar bufora, tym szybsza operacja, ale to także zwiększa ryzyko niepowodzenia?

+0

1K to ilość danych, które komputery lubią wyrzucać. na przykład Protokół IP –

+1

Wiele z rozdziału 13 TLPI poświęconych jest omawianiu tego rodzaju rzeczy. – Duck

Odpowiedz

1

Za każdym razem, gdy kod Linii odnosi się do block size, prawie zawsze jest to 1024 bytes. Linux używa bloków 1024-bajtowych do buforowania pamięci podręcznej, itp.

Oczywiście systemy plików Linux często implementują alternatywne rozmiary bloków. Standardowy rozmiar bloku systemu plików ext3 wynosi zwykle 4096 bajtów.

6

Chociaż zazwyczaj widziałem pytania filozoficzne, takie jak twoje, odrzucone i zamknięte, nadal lubię je i dyskusję, którą zachęcają. (Próbowałem dopasować wszystko do komentarza, ale to nie zadziałało.)

Krótka odpowiedź brzmi, że rozsądnie małe bufory są bezpieczne i są zwykle wybierane jako najmniejszy wspólny mianownik struktury, która jest obsługiwany (np. Twój przykład, 1024, ze względu na fakt, że większość systemów plików przydziela bloki w niektórych wielokrotności jednego kilobajta, tj. 1024 bajtów).

Dłuższą odpowiedzią jest to, że zmienne rozmiary buforów (zwykle większe niż bezpieczne wartości domyślne) odgrywają bardzo ważną rolę w optymalnej wydajności oprogramowania, ponieważ oddziałuje on ze sprzętem, a nawet typem obciążenia. Nie ma najlepszego rozmiaru dla wszystkich środowisk sprzętowych i systemów operacyjnych. Dostrajanie rozmiarów buforów jest tanim sposobem, aby programy działały lepiej w twoim systemie. Jako taki jest również używany przez nieuczciwych programistów do udawania, że ​​ich oprogramowanie jest lepsze. Rozważmy na przykład oprogramowanie serwera sieciowego. Możesz twierdzić, że twoje oprogramowanie serwera sieciowego ma lepszą wydajność, dostrajając wszystkie jego rozmiary buforów, a następnie porównując je z instalacją Apache z domyślną konfiguracją. Można również wąskie gardło oprogramowania na zewnątrz, stosując strojenie jądra, które pasuje do konfiguracji jednego oprogramowania, ale powoduje, że inne używają dodatkowej ramki dla każdego żądania, na przykład.

Strojenie w ten sposób jest również niebezpieczne, ponieważ może ułatwić wykonywanie ataków typu "odmowa usługi", takich jak "wolne loris"/wyczerpanie zasobów. Jeszcze raz mniejszy jest bezpieczniejszy, choć niekoniecznie "lepszy" w zależności od priorytetu bezpieczeństwa w stosunku do wydajności.

Powiązane problemy