Yavaş bir sabit diski taklit edebilir miyim?


19

Belirli bir aralıklı hata sadece yavaş bir disk okuma hızı olduğunda kendini gösterebilir önsezi var. Sorun giderme zor çünkü güvenilir bir şekilde yeniden üretemiyorum.

Yüksek öncelikli bir süreçle basitçe IO'yu yavaşlatmadan kısa bir süre için, yavaş bir sabit sürücüye sahip olmanın simülasyonunu yapmanın bir yolu var mı?


Sabit disklere belirli veri yolu hızlarında çalışmasını söyleyen bir komut gördüğümü hatırlıyorum. Onu kazıp çıkaramayacağımı göreceğim.
Jeremy

man hdparmbelki -X seçeneğine bir göz atın? Orada sürücünüzü yavaşlatmak için kullanabileceğiniz birkaç şey var, ancak bazıları verilere kötü şeyler yapma riskiyle karşı karşıya!
Jeremy

Ayrıca, bir ağ paylaşımını klasör olarak (google arkadaşınızdır), belki de wifi üzerinden bile (mümkünse) monte etmeyi deneyin.
Jeremy

1
Bu doğrudan bir cevap değil, ama: böyle aralıklı bir hatam olsaydı, muhtemelen Valgrind altında (derlenmiş bir dilde) işlemi çalıştırmayı denerdim, çünkü bu muhtemelen IO yarış koşullarını yakalayacaktır.
poolie

1
Bir uygulamada, çekirdekte veya aygıt sürücüsünde bir hatadan mı bahsediyorsunuz? Yoksa hiç bilmiyor musun? Daha fazla açıklarsanız yardımcı olabilir.
poolie

Yanıtlar:


15

Nbd , Network Block Device kullanın ve sonra say limit erişimini kullanarak say trickle.

sudo apt-get install nbd-client nbd-server trickle

Güzel bir çözüm için +1. ancak, gerçek bir test değildir, çünkü sorunun nerede olabileceği gerçek sabit disk aygıt sürücüsüne gitmezsiniz.
The Unix Janitor

1
Bir sürücü hatası hakkında konuştuğunu sanmıyordum, ama bu sadece bir varsayımdı. Bakalım.
poolie

10
Bu cevaba gerçek komutu eklemek mümkün mü? Şu anda sadece gerekli araçları nasıl kuracağınızı göstereceksiniz :)
Zengin

5
# echo 1> / proc / sys / vm / drop_caches

Bu seni yavaşlatacak :)

Önbelleğe alınan sayfadan yararlanmak yerine sizi diskten okumaya zorlar.

Gerçekten sofistike olmak istiyorsanız, scsi arıza enjeksiyon çerçevesini kullanarak her seferinde sahte bir okuma hatası gibi bir şey yapabilirsiniz.

http://scsifaultinjtst.sourceforge.net/


1
Not: Bu önbellekleri yalnızca bir kez bırakır. Sonra hemen önbelleğe almaya başlar. Bunu bir döngüye sarmak isteyebilirsiniz.
Androbin

@Androbin Bu fikri seviyorum. Döngüye bir uyku aralığı bile ekleyebilirsiniz. Teşekkürler!
ppetraki

4

USB 1.1 hub'ınız mı var? Yoksa yavaş bir SD kart mı? Seni 10mbps'nin altına indirecekler.


güzel ... +1 için yeterli teknik değil ama güzel
RobotHumans

3

Bu hiçbir şekilde tam bir çözüm değildir, ancak diğer önlemlerle birlikte yardımcı olabilir: Bir işlem zamanlayıcıya çok benzeyen bir G / Ç zamanlayıcısı vardır ve değiştirilebilir.

En önemlisi, aslında farklı zamanlayıcılar arasından seçim yapabilirsiniz:

~# cat /sys/block/sda/queue/scheduler 
noop anticipatory deadline [cfq] 
~# echo "deadline" > /sys/block/sda/queue/scheduler
~# cat /sys/block/sda/queue/scheduler 
noop anticipatory [deadline] cfq 
~# 

deadline daha güçlü tekrarlanabilir sonuçlar elde etmenize yardımcı olabilir.

noop, adından da anlaşılacağı gibi, delicesine aptal ve G / Ç performansında mutlak tahribatı çok az çabayla batırmanızı sağlayacak.

anticipatoryve cfqher ikisi de bu konuda akıllı olmaya çalışır, ancak cfqgenellikle ikisinin daha akıllısıdır . (Hatırladığım gibi anticipatory, aslında çekirdek birden çok zamanlayıcıyı desteklemeye başlamadan hemen önceki eski zamanlayıcıdır.)



2

Ubuntu kurulum cd'sinin iso'su gibi büyük bir dosyanın kopyasını çalıştırmayı deneyebilir ve iki kez çalıştırabilirsiniz. Bu, sürücünüzü biraz yavaşlatır.


Sorunun dediği gibi, "Basitçe
gevşetici

2

Sabit sürücünün kendisini yavaşlatmaya çalışmanın yanı sıra, bonnie ++ gibi çok sayıda disk G / Ç'ye neden olabilecek dosya sistemi kıyaslama araçlarını kullanmayı deneyebilirsiniz .

sudo apt-get install bonnie++

1
Sorunun dediği gibi, "Basitçe
gevşetici

0

nasıl make -j64? Yeni 200 hat performans yamasının make -j64çok fazla bilgisayar kaynağı yeme görevi olduğunu anlatan makalelerde


2
Bu komutun gerçekte ne yaptığını açıklamalısınız.
papukaija

Sorunun dediği gibi, "Basitçe
gevşetici

0

iotopHata ayıklamaya çalıştığınız işlemin çok fazla disk okuma / yazma işlemine neden olup olmadığını neden çalıştırmıyorsunuz ?


3
Bu cevabın yararsız göründüğünü düşünüyorum, çünkü sürecin çok fazla IO yaptığı gerçeği zaten biliniyor olabilir veya kendi başına bir sorun olmayabilir. Sorun şu ki, bu ES'leri işleme biçiminde zamanlama ile ilgili bir tür hata var.
poolie

0

Geçenlerde bir kurulum anladım

  • dizini Google Drive'ıma taşıdı
  • süper yavaş süper istemci üzerinden monte google-drive-ocamlfuse
  • orijinal yoldan yenisine bir sembolik bağlantı oluşturdu

Eğer 16 saniye gecikme yavaş yeterli değildir, sadece yönlendirici fişten çekebilirsiniz.

Referans için, bunun için bir fikrim olduğu orijinal kullanım durumu: https://github.com/goavki/apertium-apy/pull/76#issuecomment-355007128

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.