ερώτηση για τη λειτουργία append to file

Giorgos Keramidas keramida at ceid.upatras.gr
Thu Feb 8 00:23:38 EET 2007


On 2007-02-08 00:08, George Notaras <george.notaras at gmail.com> wrote:
>On Wed, 2007-02-07 at 16:55 +0200, Giorgos Keramidas wrote:
>>On 2007-02-07 16:27, George Notaras <george.notaras at gmail.com> wrote:
>>> Γενικά, σε οποιαδήποτε γλώσσα προγραμματισμού υπάρχει κάποια συνάρτηση
>>> που προσθέτει δεδομένα στο τέλος ενός αρχείου.
>>>
>>> Ας υποθέσουμε ότι έχουμε τις 2 περιπτώσεις:
>>>
>>> 1) προσθήκη data σε log 1ΜΒ
>>> 2) προσθήκη data σε log 100MB
>>>
>>> Σε ποια από τις 2 περιπτώσεις το cpu utilization ή η κατανάλωση μνήμης
>>> θα είναι μεγαλύτερη? Ή δεν παίζει κανένα ρόλο το μέγεθος του αρχείου
>>> κατά τη διαδικασία αυτή?
>>>
>>> Αντιλαμβάνομαι ότι ίσως να είναι ανόητη η ερώτηση, αλλά πρέπει να
>>> ρωτήσω.
>> 
>> Η απάντηση δεν εξαρτάται από το αρχικό μέγεθος του αρχείου, αλλά από το
>> πόσο έξυπνο, μοντέρνο και καλά σχεδιασμένο ή ηλίθιο, απαρχαιωμένο και
>> βλακωδώς σχεδιασμένο file system χρησιμοποιείς για να αποθηκεύσεις το
>> αρχείο.
> 
> Χρησιμοποιώ ext3 filesystem, οπότε να θεωρήσω ότι δεν υπάρχει πρόβλημα.

Τότε γιατί σε ενδιαφέρει το 'cpu utilization';

Το πόσο απασχολημένη είναι η CPU όταν γράφει κανείς σε ext3 filesystems
δεν έχει σχέση τόσο πολύ με το μέγεθος του αρχείου, αλλά με τις
δυνατότητες του hardware, τις τοπικές ρυθμίσεις, τον τρόπο που έχεις
κάνει newfs στο file system, το διαθέσιμο ποσό μνήμης, το τρέχον load
του συστήματος, κι ένα σωρό άλλες παραμέτρους!

Π.χ. πρέπει να δεις αν:

  * Ο δίσκος υποστηρίζει DMA και είναι ενεργοποιημένο αυτό

  * Πόσο ελεύθερο χώρο έχει το file system

Το πρώτο μπορεί να επηρεάσει την ταχύτητα με την οποία ο δίσκος μπορεί
να 'γράψει' τα data blocks από ένα αρχείο.

Το δεύτερο μπορεί να επηρεάσει την ταχύτητα με την οποία μπορεί να
επιστρέψει ο 'block & fragment' allocation αλγόριθμος του filesystem.

Η χρήση της CPU και της μνήμης δεν είναι τόσο εύκολο να καθοριστούν για
ένα και μόνο αρχείο.  Καλύτερα να μην ασχολείσαι με τη συγκεκριμένη
ερώτηση (CPU και μνήμη), αλλά προσπάθησε να βρεις κάπου πληροφορίες για
υποσυστήματα "virtual memory", "buffer cache" και "file cache" ενός UNIX
kernel.  Μια καλή αρχή είναι τα παρακάτω links:

http://www.freebsd.org/doc/en_US.ISO8859-1/articles/vm-design/
http://en.wikipedia.org/wiki/Virtual_memory
http://computer.howstuffworks.com/virtual-memory.htm
http://people.msoe.edu/~mccrawt/resume/papers/CS384/mccrawt_cs384_virtual.pdf
http://www.faqs.org/docs/linux_admin/buffer-cache.html
http://en.wikipedia.org/wiki/Cache

Αν μπορείς, βρες κάπου το βιβλίο "Solaris Internals":
http://www.solarisinternals.com/si/index.php

και το "Design and Implementation of the FreeBSD Operating System":
http://www.amazon.com/Design-Implementation-FreeBSD-Operating-System/dp/0201702452

Η ερώτηση "Πόσο CPU θα πάρει να γράψω 10 MB δεδομένα" είναι χωρίς νόημα,
αλλά μετά από όλα τα παραπάνω θα έχεις μια καλύτερη ιδέα για το πως
δουλεύουν τα "εσωτερικά" μέρη ενός UNIX πυρήνα.

Τότε μπορεί να βρεις καλύτερες ερωτήσεις :)

- Γιώργος




More information about the Linux-greek-users mailing list