मैं जावा प्रोग्राम से 300 एम फाइलें बनाने की कोशिश कर रहा हूं, मैंने पुराने फ़ाइल एपीआई से नए जावा 7 एनओओ पैकेज में स्विच किया है, लेकिन नया पैकेज जा रहा है पुराने से भी धीमी है।जावा 7 का nio.file पैकेज नई फाइलें बनाने में uber धीमा है
मुझे पुरानी फ़ाइल एपीआई का उपयोग करते समय मैंने कम CPU उपयोग किया है, लेकिन मैं यह सरल कोड चला रहा हूं और मुझे 0.5 एमबाइट्स/सेक फ़ाइल ट्रांसफर दर मिल रही हैं और जावा से लिखने से एक पढ़ रहा है डिस्क और दूसरे को लिखना (लिखना डिस्क तक पहुंचने वाली एकमात्र प्रक्रिया है)।
Files.write(FileSystems.getDefault().getPath(filePath), fiveToTenKBytes, StandardOpenOption.CREATE);
क्या यहां उचित थ्रूपुट प्राप्त करने की कोई उम्मीद है?
अद्यतन:
मैं बड़ी फ़ाइलों से 300 मिलियन 5-10k बाइट छवि फ़ाइलों को खोल रहा हूँ। मेरे पास 3 डिस्क, 1 स्थानीय और 2 SAN संलग्न हैं (सभी में बड़ी फ़ाइलों पर ~ 20MB/सेक की एक सामान्य थ्रूपुट दर है)।
मैंने इस कोड को भी आजमाया है जिसने गति को 2 एमबी/सेक थ्रूपुट से कम किया है (इन फ़ाइलों को अनपैक करने के लिए 9 दिन)।
ByteBuffer byteBuffer = ByteBuffer.wrap(imageBinary, 0, (BytesWritable)value).getLength());
FileOutputStream fos = new FileOutputStream(imageFile);
fos.getChannel().write(byteBuffer);
fos.close();
मैं स्थानीय डिस्क से पढ़ता हूं और सैन संलग्न डिस्क पर लिखता हूं। मैं एक हैडोप अनुक्रम फ़ाइल प्रारूप से पढ़ रहा हूं, हडूप आमतौर पर एक ही कोड का उपयोग करके इन फ़ाइलों को 20 एमबी/सेकेंड पर पढ़ने में सक्षम है।
उबर धीमेपन के अलावा, जगह से बाहर निकलने वाली एकमात्र चीज यह है कि मैं आईओ लिखने की तुलना में आईओओ को लगभग 2: 1 से अधिक पढ़ता हूं, हालांकि अनुक्रम फ़ाइल gziped है (छवियों को लगभग 1: 1 अनुपात मिलता है हालांकि), तो संपीड़ित फ़ाइल लगभग होना चाहिए। आउटपुट के साथ 1: 1।
2 अद्यतन
iostat
मैं कुछ विषम संख्या को देखने को देखते हुए, हम यहाँ xvdf पर देख रहे हैं, मैं एक जावा प्रक्रिया xvdb
से पढ़ रहे हैं और xvdf
के लिए लिख और कोई ohter प्रक्रियाओं पर सक्रिय है xvdf
iostat -d 30
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
xvdap1 1.37 5.60 4.13 168 124
xvdb 14.80 620.00 0.00 18600 0
xvdap3 0.00 0.00 0.00 0 0
xvdf 668.50 2638.40 282.27 79152 8468
xvdg 1052.70 3751.87 2315.47 112556 69464
पढ़ता है पर xvdf
10x लेखन कर रहे हैं, कि अविश्वसनीय है।
fstab
/dev/xvdf /mnt/ebs1 auto defaults,noatime,nodiratime 0 0
/dev/xvdg /mnt/ebs2 auto defaults,noatime,nodiratime 0 0
ये फ़ाइलें कितनी बड़ी हैं? – parsifal
@ पारसीफल "मैं 300 एम फाइलें बनाने की कोशिश कर रहा हूं [...]" – Puce
मैंने पढ़ा है कि "मैं 300 मिलियन (या हजार) फाइलें बनाने की कोशिश कर रहा हूं" नहीं, "मैं एक फाइल बनाने की कोशिश कर रहा हूं आकार में 300 एमबी "(अन्यथा, क्यों" एम "का उपयोग करें और" एमबी "नहीं?)। – parsifal