パソコンをリアルタイムの処理で使うには

計測用でリアルタイムの処理に使いたいです。
1つの処理が1/30秒程度で繰り返し処理します。

ネットへのケーブルの接続自体をしていません。
そのため、セキュリティソフトのインストールもしていません。
USBメモリなどによる外部からのファイルのロードは自分で管理し行います。
現時点では、Windows7、8.1です。試しているのはWindows7です

たまに、処理回数から計算される時間より掛かりすることがあります。
そこで、リソースモニターのディスクでみると、たまにハードィスクへの読み書きが
20Mbyte、30Mbyteとなることが発生していました。それが原因だと思えています。
小さな読み書きではリアルタイム性は損なわれていないようです。
まだ、はっきりしたこととして断定できませんが、1Mbyte程度のアクセスではリアルタイム性は損なわれていないようです。

幾つか大きな読み書きのものを見つけ停止したりもしています。

・svchost(defragsvc) ドライブの最適化とディフラグを手動にしました。

・TrustedInstaller.exe
  ネット上で、Windows Update と関係あるとあったので、
   Windows Updateを自動でやるのを止め自分でやるようにしました。
    でも、たまにTrustedInstaller.exeによる大きなアクセスが発生します。

    他にアップデートしているものがあるせいでしょうか?
  TrustedInstaller.exe 自体を無効にすることはやらない方が良いと思えますがどうでしょうか?

・svchost.exe (LocalServiceNetworkRestricted)
  ネットでホームグループと関係あるような記述があったので、
  ホームグループの参加停止をしましたが、まだ、たまに出てきます。

・svchost.exe (LocalSystemNetworkRestricted)

  何からきているのでしょうか?時折300Kbyte程度のアクセスなどが発生しています。

・他にも色々動き出します。


ケーブルを接続していないのに、ネット絡みのプログラムがバックグラウンドで動くのですね。

特に最初の2つが影響が大きいようですが、リアルタイムな処理に使えるように、
昔ながらのスタンドアローンのパソコンとして使えるようにするにはどうしたら良いですか?
全体的な考え方や簡単に実現する手順を教えていただけませんか。

* 小さ目のページ番号でお試しください。

* 番号のみをご入力ください。

* 小さ目のページ番号でお試しください。

* 番号のみをご入力ください。

skumanohides さん、こんにちは。
マイクロソフト コミュニティへの投稿ありがとうございます。

>> リアルタイムな処理に使えるように、昔ながらのスタンドアローンのパソコンとして使えるようにするにはどうしたら良いですか?

という質問に直接つながるような情報は見つけることができなかったのですが、書いていただいたリソース モニターの項目については、以下のようにしてさらに絞り込んでみてはいかがでしょう。

1. [CPU] タグ > [プロセス] 欄

2. [svchost.exe (LocalServiceNetworkRestricted)] にチェック

3. [サービス] 欄を開くとホストされたサービス一覧が表示される



4. [こちらのページ」の各サービス説明を参考にしながら停止しても問題なさそうなサービスを確認

5. [サービス コンソール] から該当サービスの [スタートアップの種類] を無効にする

完全なオフライン環境であればネットワーク関連サービスや、もし不要であればオーディオ関連サービスなどは無効でも良さそうに思いますが、サービスごとの複雑な依存関係もあるので一概には言えなそうですね。

他に良い方法などご存知の方がいらっしゃいましたら、書き込みをお待ちしています。

津森 美緒 – Microsoft Support
-------------
[この回答で問題は解決しましたか?] にて評価にご協力をお願いします。
返信が問題解決に役立った場合は、 [はい] を押すことで回答とマークされます。
問題が未解決の場合や引き続きアドバイスを求める場合は、 [返信] からメッセージを送信してください。
[いいえ] を押しても、未解決であることは回答者には伝わりません。

この回答が役に立ちましたか?

役に立ちませんでした。

素晴らしい!フィードバックをありがとうございました。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。今後のサイト改善に役立てて参ります。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。

前回書き忘れていましたが、スタートアップの項目は全て無効にしています。
 
Windowsは完全なリアルタイムは出来ないとのことのようです。
ただ、私の場合はそこまで、厳しいリアルアイムではなくても良いように思えます。

ディフラグなどの大きなアクセスが動いている場合にリアルタイム性が少し悪くなっています。
常にバックグラウンドで何かが動いているようですが、大抵の時間帯ではOKです。
ただの感じですが、数ミリ秒・数メガバイトのバックグラウウンドのアクセスがあっても大丈夫なのでは。

ディスクディフラグのスケジュールに従って実行するのチェックを外しているにも関わらず、
今日、バックグラウンドでディフラグ[Defrag.exe、svchost.exe(defragsvc)]が動き出しました。
なぜなんでしょう?
30メガバイトほどのアクセスがあり、リアルタイム性が損なわれました。
とりあえず、これだけでも止めることができれば良いのですが。

まだ、ご案内のものを読めていませんが、とりあえず、システム構成/サービスの
Windows Update、Network の文字があるもの、Perrの文字のあるもの、Netlogon、
Windwos Defenderなどなど無効にしましたが、ネット絡みのバックグラウンドのプログラムが動きだします。
関連するものが他にもたくさんあり、一つ一つ無効にするのは大変な状況です。

この回答が役に立ちましたか?

役に立ちませんでした。

素晴らしい!フィードバックをありがとうございました。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。今後のサイト改善に役立てて参ります。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。

通常の Windows はそういったリアルタイム性を求める、組み込み用としては提供されていません。
このため、あなたにとって不要なサービス・プログラムと思えるものが標準で稼働しており、それらを無効にしていくのに手こずるのはそんなものとしか言えません。
(そういった部分にまで手を出さないといけないのなら、Windows を使わないか、カスタマイズできる Windows Embedded 路線を考えるべきだと私は思います)

開発者としての意見ですが、1/30 秒、おおよそ 33ms に一度ですから、1回あたりの処理量次第ですが、割とスピード要求が厳しい方だと思います。

以下は推測ですが、defrag で思い当たるとしたら、タスクスケジューラーに登録されているタスクかなぁ。

この回答が役に立ちましたか?

役に立ちませんでした。

素晴らしい!フィードバックをありがとうございました。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。今後のサイト改善に役立てて参ります。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。

○Windows7ですが、以下の手順でリアルタイムな動作ができるようになりました。

1.システム構成/サービスで全て無効にしました。
この段階で私のプムログラムは正常に動いています。
また、defragやTrustedInstaller.exeはやネット関係のサービスも動いていませんで、
重たいプログラムがバックグラウンドで動かず、リアルタイムとしても問題ありません。

2.EXCELは動かしたいので、Officeという文字のあるサービスを有効にしました。

3.インストールは出来て欲しいので、Windows Installerを有効にしました。

4.Visual Studioも動かしたいので、COM+ Event System を有効にしました。

ここまでで、私のプログラムとしてはリアルタイム性は問題ありません。


○以下の2点を解決したいです。

1.ディスクディフラグに関して

Windows 7 にはサービスのところにも有効無効があり、これも無効にしていないと、
ディフラグのプログラムの方で無効としただけでは、ディフラグは動いてしまうようです。

サービスの方でも無効にし、ディフラグは手動でやろうと思いましたが、
サービスのDisk Defragmenterが無効のままだと、手動でも動かないので残念です。
また、Disk Defragmenter を有効にしても、Windows Event Logを有効にしないと、
”タスクスケジューラサービスが実行されていないためディスクデフラグツールを開始できません。”
となり、ディフラグが動かせません。

Windows Event Log を有効にすると、ネット関係のものやTrustedInstaller.exe 
など色々動き出し、リアルタイム性にはマイナスになります。

ディスクディフラグが単純に手動で動いてくれれば良いのですが。出来ないですかね?


2.ビープ音に関して

Windows AudioとWindows Audio Endpoint Builder を有効にしました。
また、ネット上で、
「DCOM Server Process Launcher」
「Multimedia Class Scheduler」
「Remote Procedure Call(RPC) Locater」
も有効にする必要があるとのことですが、

Windows 7 SP1 のシステム構成のサービスを探しても「DCOM Server Process Launcher」は
ありません。(ちなみに、バックグラウンドで、svchost.exe (DcomLaunch)は動いています) 
そのせいか、ビープ音がしません。
サウンドではなく、単純なビープ音で良いのですが、代わりに追加するものがありますか?

この回答が役に立ちましたか?

役に立ちませんでした。

素晴らしい!フィードバックをありがとうございました。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。今後のサイト改善に役立てて参ります。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。

返信 削除されたメッセージへの返信において
1GHz = 1,000,000,000 だとして、1クロックは 1 / 1,000,000,000
μsecを通り越しnsec オーダーでは。2GHz、3GHz になると確かピコでしたか。
私の感覚では今のコンピュータでは、10msec あるとかなりの仕事ができると思っています。
工場のラインなどは確か秒100個の処理でも遅い方だと聞いたことがあります。

この回答が役に立ちましたか?

役に立ちませんでした。

素晴らしい!フィードバックをありがとうございました。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。今後のサイト改善に役立てて参ります。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。

返信 削除されたメッセージへの返信において

> 素人目に覧ても HDD では無理が有るのでは?
そういうことであり、私のプログラムはHDDへのアクセスはありません。

今回の問題は、OSのサービスがバックグラウンドで動きハードディスクにアクセスする
ことにより私のプログラムがリアルタイムで動けなくなったということです。

サービスのハードディスクへのアクセスで重たいもの1つがディスクのデフラグです。
サービスをすべて無効にすると、デフラグも他の殆どのものもハードディスクへのアクセスはしなくなります。
この段階でリアルタイム性が確保できています。

残念なのはサービスのDisk Defragmenterを無効にしていると、手動ででもデフラグが動かせないことです。


> それはあくまでもハードウェアとしての能力であって、
> Windows OS が規定する1クロックの長さとは基本的に関係無いのです。

Windows OS が規定するクロックの意味が分からないので質問です。

前から Windows の時間の測定精度は16msecだと思っていました。
時間計測では timeGetTime を使っていますが、この精度も16msecだと思っていました。

timeGetTimeのMSの資料では
Windows NT:timeGetTime 関数の既定の精度は、マシンによっては 5 ミリ秒以上になる場合があります。
Windows 95:timeGetTime 関数の既定の精度は 1 ミリ秒です。つまり、timeGetTime 関数は、1 ミリ秒しか違わない連続値を返すことができます。
とありますが、15msec とか 16msecなどの記述はありませんが?

上記で言っている測定精度とWindows OS が規定する1クロックの長さは同じものですか?
測定精度はあくまでも測定の精度であって動作を規定するものとは思っていませんでした。


時間の計測では、1000回ほどのループで計測し

全体として、16msecぐらいの誤差なら正しく動いているものと判断しています。

> 1クロックはおよそ15msで、
> 各スレッドに割り当てられるタイムスライスの最小単位は2クロックの整数倍に
> なるはずだったと思うので、33msってほぼ限界ギリギリなのではないかと
もしそうだとすると私も直ぐ破綻すると思います。
実際には、上のように測定精度の範囲の誤差しかでず正常に動いています。


しかし、サービスを外すとパソコンは軽快に使えるのですね。

この回答が役に立ちましたか?

役に立ちませんでした。

素晴らしい!フィードバックをありがとうございました。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。今後のサイト改善に役立てて参ります。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。

全部読んだわけではないのですが、何を要望されているのでしょうか。

下記の部分で言えば、リアルタイム処理ができるというのと、

スタンドアローンで使えるパソコンというのは、意味が全く異なるので関係ありませんし、

そもそも Windows 7/8.1 は  リアルタイム OS ではありません。

簡単に実現したいのであれば、リアルタイム OS を開発するか導入する必要があります。

組み込み用 Windows  であれば、Windows Enbedded があります。

http://esg.teldevice.co.jp/product/microsoft/schedule.html

>リアルタイムな処理に使えるように、 昔ながらのスタンドアローンのパソコンとして

>使えるようにするにはどうしたら良いですか?

>昔ながらのスタンドアローンのパソコンとして使えるようにするにはどうしたら良いですか?
>全体的な考え方や簡単に実現する手順を教えていただけませんか。

用途が全く違うものを、無理やり自分の用途に当てはめて使いたいという要望に読めるのですが、

その場合、考え方もおかしいので簡単に実現できる方法などありませんが。

既にみているかもしれませんが参考までに。

http://www.bugbearr.jp/?Windows%2F%E6%99%82%E5%88%BB

http://d.hatena.ne.jp/shiku_otomiya/20100218/p1

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=27114&forum=7

2 ユーザーがこの回答を役に立ったと思いました

·

この回答が役に立ちましたか?

役に立ちませんでした。

素晴らしい!フィードバックをありがとうございました。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。今後のサイト改善に役立てて参ります。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。

返信 削除されたメッセージへの返信において

> 全部読んだわけではないのですが、何を要望されているのでしょうか。
> 下記の部分で言えば、リアルタイム処理ができるというのと、
> スタンドアローンで使えるパソコンというのは、意味が全く異なるので関係ありませんし、
> そもそも Windows 7/8.1 は  リアルタイム OS ではありません。
> 簡単に実現したいのであれば、リアルタイム OS を開発するか導入する必要があります。
> 組み込み用 Windows  であれば、Windows Enbedded があります。

Windows Enbedded を使うことは私にとって別次元の大変な世界だと思っています。
また、コスト高で製品として成り立たなくなると考えています。
そのため、なるべく使わない方向で考えています。

これまでのデバイスでは今回の誤差が発生することはありませんでした。
なぜなのか説明できませんが、一つにはDMA転送をしています。
もう一つにはデバイス側にバッファーを2つ持っています。
最初のころバッファーを持っていない時は失敗がありました。
デバイスメーカがバッファーを付けたものを出し失敗が無くなりました。
リアルタイムOSでないとしてもリアルタイムにデータの収集ができているように思います。
スケジューラの関係で転送できない時に、メーカが上手く調整し、後から転送しているということでしょうか?

今回テストしている新しいデバイスはDMA転送もなくデバイスにバッファーも持っていません。
コンピュータを立ち上げた後10分ぐらいは、色んなサービスプログラムが
盛んに動いていますので、元々プログラムは動かしていません。
その後暫くしてサービスプログラムが静かになったところで、
プログラムを動かした時に、通常想定している誤差の30倍程度の誤差がでます。

朝9時に立ち上げた場合、9時30分ごろを含む時間帯で動かした場合です。
他の時間帯にはこの誤差が現れず、十分利用できる範囲です。
この時間帯を外せば、私が確認した範囲では問題のある誤差は発生していません。

9時30分ごろのディスクのアクセスを調べたら、デフラグが猛烈にディスクをアクセスしていました。
もう一つ、ネット関係と思われるものが幾つか盛んにアクセスしていました。
そこで、サービスを無効にすると、この時間帯でも誤差が発生しなくなりました。

ネットアクセスをしないという前提のパソコンですので、それで問題ありません。


リアルタイムに関して
リアルタイムとは秒30ぐらいのことを指していると思います。
私が利用しているデバイスもそうでした。
しかし、今回の観察に必要なサンプリングレートは必ずしも秒30で
なければならないということではないようです。
というのは毎回のサンプリングでノイズがでますが、必要な信号部分の変化より大きいようです。
また、Real-time OSでないということから発生する誤差より大きいようで、
Real-time OSでないということから発生する誤差は見えてきませで、無視しても構わないようです。
必要なサンプリングレートはもっと小さいもので良いということです。
そういう意味では、リアルタイム計測とは言わず、その場計測といった方が正確になります。
デバイスは秒30で取り込むものですが、実際のデータはそんなに時間分解能は必要ありませんでした。

私の整理としては、
私のテーマはリアルタイム計測をするということでなく、その場計測をするということです。
そして”その場計測にWindowsは利用できる”です。


> すべてのサービスを止めることで、ご自身のプログラムは軽快に動作するようになった。。。。とのことですが、
> それはたまたま運が良かっただけだと思うのです。
> skumanohides さんのプログラムが HDD へのアクセスを行わないとしても、
> NT カーネルがページ ファイルの情報を読み出す、あるいは更新する可能性は常にあるので、
> その際には HDD へのアクセスが発生することになり、
> その際にページ フォールトを引き起こす可能性も充分にあり得ると思います。
確かに、ページ ファイルの情報を読み書きは他の時間帯でも常にあります。
しかし、ネット関係とデフラグのハードデイスクへの激しいアクセスが無く、
プログラムは想定の誤差の範囲です。

> もっと言えば、ネットワーク関連のプロトコル ドライバでトラフィックが増大した場合、
> あるいは何かのデバイスで、デバイスからの割り込みが発生した場合等、33ms 間隔を破たんさせる要因は他にもあると思います。
> なにより、主要サービスをほとんど止めた状態でしか実現できないというのは、現実的ではないと思うのです。

ネットワークへの接続がなく、そのためのサービスプログラムもUpdateも動く必要はありません。
主要サポートとは何なのでしょう。
ネットを使わなければ、それほどないような気がします。
今回見ていて気付いたのは、1つには検索用に索引を作っているようです。
もう一つが、ハードディスクの維持のためにデフラグです。
以上の2つとも、目的を害してまで、目的にのプログラム実行中にやる必要はないと思います。
ネット接続がないと、意外と他に重要なことは無いような気がしています。
サービスについて少し分かってきたので、ある程度追加することもできるようになりました。

ターゲットのパソコンは個人があれやこれやの目的に使うものではありません。
メインの装置に付随する、基本的に単目的のためのパソコンになります。
目的のプログラムが動くのが一番です。
データを収集・計算・グラフ表示をするために使えれば良いものです。
世の中に多数あるアプリケーションの一つです。

マイクロソフトへの要望という形をとれば、スタンドアロンというチェックボックスを作り、
・ネットワーク関連のサービスを動かさない。
・デフラグサービスを無効にしても、手動ででも出来るようにする。
・インストールをできるようにする。
・エクセルが動くようにする。
・ビープ音はする。

今思いつくのはこれぐらいですが、とりあえずこれで問題なく仕事ができます。
一つ一つ選択するのは大変ですし、確かに、なるべく止めたくはないので、
マイクロソフトにてスタンドアロンということで、適当にアレンジして頂けたたら一番ありがたいです。

ところで、33msecはダメだとして、Windows はどのくらいの処理ができるといえるのでしょうか?
ネットワーク関連のサービスとデフラグサービスがハードデスクを激しく長時間アクセスすると、
スケジューラとか33msとかいうレベルの話では無く、もっと大きな大きな時間の遅れが発生しそうに思えます。

最近はネットに接続されていないとパソコンでないとの感じですが、
未だに、スタンドアロンのパソコンでその場計測のアプリケーションなども多数動いていると思います。
スタンドアロンのパソコンも、も少しサポートして頂けたらと多くの人が助かるのではないのでしょうか?

この回答が役に立ちましたか?

役に立ちませんでした。

素晴らしい!フィードバックをありがとうございました。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。今後のサイト改善に役立てて参ります。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。

Windowsに計測の直接処理をさせるのは難しいと思います。

処理を計測する機器を自作して計測したデータをパソコンへ取り込んでソフト上で行うのが普通だと思う。

Wiondowsにリアルタイム計測は不向きで出来ないかと思います。

まあ、私の意見として参考にされてください、具体的にはあなたの現場へ行かないと出来ないかと思います。

この回答が役に立ちましたか?

役に立ちませんでした。

素晴らしい!フィードバックをありがとうございました。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。今後のサイト改善に役立てて参ります。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。

リアルタイム、33msecということで始まりましたが、
その間隔でのデータの違いはあまりなく、66msecでも100msecでも問題ないということが分かりました。
また、全体の経過時間の誤差も通常は1/10万もありません。
十分役に立つデータが取得出来ていると思います。

ただ、デフラグと諸々のネット関係のサービスが激しく動くと少し大きな誤差が出ます。
サービスのWindows Event Log を無効にするとそれらは動かなくなります。
なので、無効にして計測をして貰うことにしました。
または、パソコンを立ち上げた後の1時間でこれらの激しいアクセスはなくなりますので、
1時間後以降に計測して貰うことにしました。
(これまでも、メインの装置が安定するまではそれ以上の時間が掛かって

 いましたので実際に問題が発生することはありませんでした。)

私としては、Windowsで有用なデータが取得できていると判断しています。
今回は、色々勉強させて頂きどうもありがとうございました。


この回答が役に立ちましたか?

役に立ちませんでした。

素晴らしい!フィードバックをありがとうございました。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。今後のサイト改善に役立てて参ります。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。

* 小さ目のページ番号でお試しください。

* 番号のみをご入力ください。

* 小さ目のページ番号でお試しください。

* 番号のみをご入力ください。

 
 

質問情報


最終更新日 2020年1月24日 表示 2,623 適用先: