アーカイブ

‘PC’ カテゴリーのアーカイブ

Apacheベンチマーク

2010 年 7 月 25 日 コメントはありません

先日のyum updateで無効になったhttpdもメモリキャッシュを再び有効にしました。その際どれくらいの効果があるのだろう、と気になったのでベンチマーク方法を探してみると、今のApacheには最初からツールが付いてくるそうではありませんか。

という訳でmod_mem_cacheのOFF/ONでどれくらい効果が出るのか測定してみることに。Server version: Apache/2.2.15 (Unix)です。

コマンド

/usr/bin/ab -n 100 -c 10 http://dolls.orz.hm/

使い方はITmedia 「httpのパフォーマンスをチェックしたい~ApacheBench編~」を参考にしました。上記のパラメータでは100回のリクエストを10個同時にこなす(=10回行われる)事になります。

before

Server Software:        Apache
Server Hostname:        dolls.orz.hm
Server Port:            80

Document Path:          /
Document Length:        76965 bytes

Concurrency Level:      10
Time taken for tests:   92.168 seconds
Complete requests:      100
Failed requests:        26
(Connect: 0, Receive: 0, Length: 26, Exceptions: 0)
Write errors:           0
Total transferred:      7716648 bytes
HTML transferred:       7696348 bytes
Requests per second:    1.08 [#/sec] (mean)
Time per request:       9216.780 [ms] (mean)

Time per request:       921.678 [ms] (mean, across all concurrent requests)
Transfer rate:          81.76 [Kbytes/sec] received

Connection Times (ms)
min  mean[+/-sd] median   max
Connect:        0    1   3.5      0      15
Processing:  5080 9062 1014.4   9077   11657
Waiting:     3958 5336 620.7   5336    7841
Total:       5080 9064 1015.1   9077   11672

Percentage of the requests served within a certain time (ms)
50%   9077
66%   9445
75%   9609
80%   9721
90%  10230
95%  10796
98%  11446
99%  11672
100%  11672 (longest request)

after

Server Software:        Apache
Server Hostname:        dolls.orz.hm
Server Port:            80

Document Path:          /
Document Length:        76967 bytes

Concurrency Level:      10
Time taken for tests:   89.383 seconds
Complete requests:      100
Failed requests:        32
(Connect: 0, Receive: 0, Length: 32, Exceptions: 0)
Write errors:           0
Total transferred:      7716828 bytes
HTML transferred:       7696528 bytes
Requests per second:    1.12 [#/sec] (mean)
Time per request:       8938.315 [ms] (mean)

Time per request:       893.831 [ms] (mean, across all concurrent requests)
Transfer rate:          84.31 [Kbytes/sec] received

Connection Times (ms)
min  mean[+/-sd] median   max
Connect:        0    2   6.6      0      31
Processing:  5885 8821 796.2   8671   10670
Waiting:     4347 5160 493.9   5116    7187
Total:       5885 8823 796.4   8671   10702

Percentage of the requests served within a certain time (ms)
50%   8671
66%   8988
75%   9155
80%   9502
90%  10113
95%  10372
98%  10655
99%  10702
100%  10702 (longest request)

両方ともhttpdをリスタートした直後に行いました。

こう見るとあまり大した差にはなっていませんが、少なくともメモリキャッシュを有効にした方が速くはなっています。またキャッシュが効きだすのか、起動してしばらくたったhttpdてテストをするとさらに若干の向上がみられます。Failed requestsが増えるのも気にはなるのですが。

とりあえず自分の場合は速度というよりディスクになっているUSBメモリの延命が目的。

ついでにLogの書き出しを行ってくれる様、1行httpd.confに追加しました

BufferedLogs on

これも上記と同様の狙いです。

カテゴリー: PC タグ: , ,

VBScriptで展開後のPCを設定する方法

2010 年 7 月 23 日 コメントはありません

Symantec Ghost & XP sysprep | 徒労日記に引き続き、自分メモ的なオハナシ。

GhostなどのDeployツールでシステムイメージを大量複写した後、個別の設定を行うVBScriptの一例。今回初めてVBScriptをさわりましたが、やりたいこととできるコト(自己能力的な意味で)に差があって大変でしたが、とても便利なものだと実感。ネットでベストプラクティスやサンプルスクリプトをあさり、切った貼ったして使える様にしました。
今後の為に書いておきます。

宣言

Option Explicit
Dim xxxxxx

まずは基本らしい。
Option Explicitで宣言していない定数の使用をエラーにする。Dimで宣言だけど何型とか無いのかな・・・

日時を確認

  Dim DT,TM,nowtime
  DT = Year(Date) & "年" & MonthName(Month(Date)) & Day(Date) & "日(" & WeekdayName(weekday(Date)) & ") "
  TM = Hour(Time) & "時" & Minute(Time) & "分"
  nowtime =  DT & TM

  MsgBox ("日時を確認し、問題なければOKを押してください" & vbCrLf & nowtime)

現在の時刻を表示するだけ

IPアドレスを変更する

Set objWMIService = GetObject("winmgmts:\\" & strThisPC & "\root\cimv2")

Set colNetAdapters = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

strIPAddress = Array(InputBox("端末IPアドレスを入力してください","IPアドレスを入力してください","192.168."))
strSubnetMask = Array("255.255.255.0")
strGateway = Array(InputBox("ゲートウェイのアドレスを入れてください" & vbLf & "IPアドレスの第四オクテットを254にしたものです。","デフォルトゲートウェイを入力してください","192.168."))
strDNSServers = Array("192.168.1.200", "192.168.1.201", "192.168.1.220")

'Inform user
WSH.Popup "設定を有効にするため、しばらくお待ちください。" & vbLf & "これには10秒ほどかかるコトもあります。",3,,64 + 5
strGatewayMetric = Array(1)

For Each objNetAdapter in colNetAdapters
    errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
    errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
    errDNSServer = objNetAdapter.SetDNSServerSearchOrder(strDNSServers)
    If errEnable = 0 Then
        WSH.Popup "IPアドレスは変更されました。",2,,64 + 5
    Else
        WSH.Popup "IPアドレスを変更することができませでした。" & vbCrLf & vbCrLf &_
         "LANケーブルが接続されているか確認し、手動で設定を変更してください。",,64 + 5
    End If
Next

※変数の宣言が省かれてますので使うときは適時宣言してください。
IPアドレスとゲートウェイを手入力させ、サブネットマスク、DNSは規定値を書き込みます。手入力の際の手間を減らすため、統一の第二オクテットまでは出しておきます(ex. 192.168.)。DNSは複数あるばあい、続けて複数個記述すれば順番にパラメータとして入る様です。Popupのプロパティがみんな”64+5″なのはただOKボタンを出したく無いから。本当はボタンを出したく無いのだけどやり方がわからなかったorz
「OK」があると押したくなるのはヒトの常。せめてもの抵抗で「再試行」「キャンセル」ボタンにしました。

コンピューター名の変更

strComputername = InputBox("コンピュータ名を入力してください","コンピュータ名入力")
strComputername = UCase(strComputername) 'Force capitalization
WSH.Popup "Please wait.",2,,64 + 5

'Computername
strCCS = "HKLM\SYSTEM\CurrentControlSet\"
strTcpipParamsRegPath = strCCS & "Services\Tcpip\Parameters\"
strCompNameRegPath = strCCS & "Control\Computername\"

'Delete current settings in registry and write new ones
With WSH
  .RegDelete strTcpipParamsRegPath & "Hostname"
  .RegDelete strTcpipParamsRegPath & "NV Hostname"

  .RegWrite strCompNameRegPath & "Computername\Computername", strComputername
  .RegWrite strCompNameRegPath & "ActiveComputername\Computername", strComputername
  .RegWrite strTcpipParamsRegPath & "Hostname", strComputername
  .RegWrite strTcpipParamsRegPath & "NV Hostname", strComputername
End With   ' WSH
WSH.RegWrite "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\AltDefaultDomainName", strComputername
WSH.RegWrite "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultDomainName", strComputername
WSH.RegWrite "HKCU\Software\Microsoft\Windows\ShellNoRoam\", strComputername
WSH.RegWrite "HKEY_USERS\.DEFAULT\Software\Microsoft\Windows Media\WMSDK\General\Computername", strComputername

WSH.Popup "OK... Done!",2,,64 + 5

このやり方では直接該当レジストリにコンピュータ名を書き込んでいます。なのでもしかすると元々無いキーを無理矢理作ってしまう恐れがあります。時間があれば他のやり方を探してみるといいでしょう。

再起動

WSH.Popup "再起動します。 Please wait...",2,,64 + 5
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate,(Shutdown)}!\\" & strThisPC & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
    ("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
    ObjOperatingSystem.Reboot()
Next

丸写しでした

タイマー

Dim WshShell
Dim intMsg

Set WSHShell=Wscript.CreateObject("Wscript.Shell")
intMsg = WSHShell.Popup ("サーバ処理待ちの為、10分待機します",5,"サーバ処理待ち時間",vbOKOnly)

Wscript.sleep(3 * 60 * 1000)
Wscript.echo "10分経過しました"

sleepのパラメータ、1000で10分、100で1分待ちです。

現在のIPアドレス、ゲートウェイ、ホスト名を表示

Set wsh = WScript.CreateObject("WScript.Shell")

computername = wsh.ExpandEnvironmentStrings("%COMPUTERNAME%")

Set exe = wsh.Exec("ipconfig.exe")

Do Until exe.StdOut.AtEndOfStream
  strLine = exe.StdOut.ReadLine
  If InStr(strLine, "IP Address") <> 0 Then
    iColon = Instr(strLine, ":")
    ipaddress = Mid(strLine, iColon + 2)
    ipaddress = Replace(ipaddress, vbCr, "")
  End If
Loop

Function DefaultIPGateway()
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
    Set colItems = objWMIService.ExecQuery( _
       "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True",,48)
    For Each objItem in colItems
        If isN	ull(objItem.DefaultIPGateway) = False Then
            DefaultIPGateway = Join(objItem.DefaultIPGateway, ",")
            Exit For
        End If
    Next
    Set objWMIService = Nothing
End Function

WScript.Echo "コンピュータ名はこれでよろしいですか?" & vbCrLf & vbCrLf & computername
WScript.Echo "IPアドレスはこれでよろしいですか?" & vbCrLf & ipaddress
Wscript.Echo "ゲートウェイはこれでよろしいですか?" & vbCrLf & vbCrLf & DefaultIPGateway()

だいぶやっつけのツギハギ。
こちらもいろいろ方法はあると思いますが、ipconfigを実行してその内容からIPを抜いてます。だからゲートウェイも抜けるはずなんだけど時間なくて他のところからスクリプト持ってきた。

自分を消す

FSO.DeleteFile("C:\hogehoge.vbs"),True

ファイルの削除。自分自身も消せます。

以上。
自分でかけばもっと無駄のないソースが書けそうですが、今回は知識も時間も及びませんでした。

あともう1つできなかったのがWorkgroup名の変更。かなり調べたんだけど、ドメインばかりでWorkgroupを変更する事例が見つかりませんでした。Win2000でNETDOM.exeを使って変更している事例はありましたが、XP Resource KitのNetdomは別物になっていて変更できなかったし。むぅ。

カテゴリー: PC タグ:

iTunesアートワークの歯抜けを解消するBroadway

2010 年 7 月 19 日 コメントはありません

iTunesは普段、アルバムアート(アートワーク)が見える状態で使っています。でもそこに歯抜け(ワートワークの無い)状態の曲があると気になりませんか?

iTunesとかで買った曲ならアートワークはついてきますが、自分でCDから変換した場合はこのとおり。iTunesでも右クリックメニューから「アルバムアートワークを入手する」が選べますが、iTunesで取り扱いのないアルバムのアートワークは見つかりません。

そこを解消してくれるのがBroadway – Voralent Computer Service
昔使っていたツールが名前を変えてより使いやすくなってましたよ。

一見わからなかったので簡単な使い方だけ紹介。

まずBroadwayを起動するとiTunesも一緒に起動します。その状態で以下のオレンジ枠のメニューを選んでください

しばらく処理をするとiTunesに「アートワーク未登録曲(ミュージック)」というプレイリストが出てきています。これがアートワークの無い曲一覧です。あとはそのプレイリストからアートワークを入れたい曲を再生。

するとBroadwayがどこからか「アルバム名」「アーティスト名」「曲名」などからヒットしたそれらしき画像をピックアップしてくれます(”♪Artwork Search”タブを選んでください)。あとは自分がアートワークにしたい画像を選び、オレンジ枠でかこんだ青い”+”ボタンを押すと曲データにアルバムアートが書き込まれます。簡単簡単。
書き込みはアルバム単位で勝手にやってくれるので、アルバムのすべての曲で同じコトをする必要はありません。どうしても見つからない場合は、右上の検索欄でキーワードをゆるくし、再検索するコトもできます。

これでかなり歯抜けが減らせると思います。ちなみにアートワークは大きいモノを選ぶとそのまま曲ファイルサイズに+されるので注意が必要です。どの画像が一番選ばれたかは、画像解像度の横に出ているxxxx pointでわかります。

このツールでも書き換えられない曲もあるんですが・・・なんでしょうね。

カテゴリー: PC タグ: , , ,

GMCのオモシロケース

2010 年 7 月 12 日 コメントはありません

ちょっと手抜きですが、思いつきで買ったPCケースが思いの外良かったので紹介。

Do-夢で見つけたGMC R2 TOASTってケースです。在庫処分だったため特価の¥3,980でした。Do-夢のGMC取り扱い率はすごいわ・・・w

. 実験用にDO夢で買ってきました。 @GMC1 さんにささげるw http://tweetphoto.com/32036384
posted at 15:09:23

踊るの録画見ながら組み上げた。剛性と精度は難ありですが色でチャラですw @GMC1 http://tweetphoto.com/32045381
posted at 16:11:50

まずビックリするほど軽いんですがw
おおよそ剛性とはかけ離れた作りをしています。ただオレンジの発色が良く、天板・側板とも塗装は悪くありません。CPUダクトや本体上側にUSB&オーディオポートを用意するなどトレンドも押さえてます。

そしてケースの名前にもなっている1番の目玉、「下からせり上がってくるトーストの様なCDトレイ」は機材不足の為お見せできず(ノ∀`) ちょうど電源ボタンの裏のあたりにドライブを立ててマウントするんですが、自分の(Pionnerのふるーいスロットイン)は長すぎて入りませんでしたよ。また、中に入れるHDDも縦設置。この奇抜なデザインのおかげか、ATXマザー対応ながら奥行きはかなり小さくコンパクトなケースになってます。

意外といい・・・だと?

ちなみに暗闇ではこんな風に光ります。いいなぁw

元々足下でまな板ならぬおぼんの上で動いてた実験用寄せ集めPCを中に入れる為用意しました。なのにESXi(無償の VMware ESXi: ベアメタル ハイパーバイザー)を入れようと思ったらメモリが1GBじゃダメだとう?仕方ないからMacでも入れるかぁ

カテゴリー: PC タグ:

Symantec Ghost & XP sysprep

2010 年 7 月 11 日 コメントはありません

Symantec Ghost

Symantec Ghost はイメージを作成および復元するための VMWare のディスクイメージ(.vmdk ファイル) をサポートします。Symantec Ghost はコンピュータのみを復元するための Backup Exec システムリカバリ (.v2i、.iv2i) イメージと DeployCenter Library (.pqi)イメージをサポートします。

他の仮想ディスク形式(ex.Vertual PCの.vhdnなど)もVMWare形式にすればGhostで複数PCへDeployできるって事かな。仮想ディスク形式を相互変換できるツールがありました

NHC

仮想マシンハードディスクイメージ変換(convert)ツール

稼働中の現在のシステムディスクも.vmdkに変換できる模様。もし本当にそうなら夢が広がります。今試してみた限りではVirtual PC(Win7版)の.vhdから.vmdkに変換できるものの、GhostCastのイメージとしては使用できませんでした。ファイル形式をどのVersionにしてもダメ。
本来のVMwareで動いてるならいいんですけどね。

GhostCastサーバ開始時設定

・サーバ側

「オプションを追加」を選択。「クライアントコマンドラインオプション」にてディスク番号を”1”、コマンドラインへ以下のオプションを追加。「ファイル(F)」メニューのオプション(O)…の「操作を再開する」にチェックをつける。

-sure -rb #でクライアント適用後の自動リブートを付加。

・クライアント側

以下パラメータをつけてghost(.exe)を起動する事で自動配信開始となる

-ja= <セッション名 > -jaddr= <サーバIPアドレス>

jaでCastサーバーのセッション名、jaddrでIPアドレス指定。DHCPを使っていればjaddrはなくても良いが、あっが方が確実。レスポンスも良い。
Linuxブートクライアントを作成した場合、satartup.shの改行コードは”LF”(文字コードはSJISでOK)を選ぶこと。自動(CR+LF)では改行が・となり処理されない。WinPEクライアントの場合は作成されたブートディスクを直接変更する事は不可能。

XP Sysprep

Microsoftのシステム再構成(パッケージング)ツール。一つのマスターから複数のクローンをDeployする際、SIDの重複を防ぐ。セキュリティの誤動作を防ぐ目的もあるが、Microsoftはこれを用いていない複製されたシステムをサポートしていない。

Windows XP SP3でsysprepの利用 その1 応答ファイルの作成 – KoHの備忘録

Ghost で Sysprep を使用するには

@IT:Windows TIPS — Tips:sysprepで環境複製用のマスタ・イメージを作成する

  1. マイクロソフトのサイト「ダウンロードの詳細 : 上級者用 SP2 展開ツール」からsysprepをダウンロード。XP SP3対応版は英語版しか公開されていないが、SP2用日本語版でも問題無い模様。
  2. c:\sysprepへcabを解凍
  3. setupmgrを実行、sysprep.infを作る。選択は「新しい応答ファイルを作成する」→「Sysprepセットアップ」→「Windows XP Pro」
  4. 「インストールを完全に自動化しますか?」については使い分け。完全自動化する場合、コンピューター名、ユーザー名等の入力が必須になる。自動化しない場合、空欄にすることができる。クローンの起動後、MiniSetupが起動し質問される。
  5. sysprepを実行
  6. 「Mini-Setupを使う」にチェックをつけ「再シール」。シャットダウンされる
  7. Ghost等でイメージ保存する。

「プラグアンドプレイでないハードウェア検出する」をチェックすると、クローン起動時にハード検出が行われる。マスターとクローンのハード構成が異なる場合に使用できそう。あとは検証中だけど「Mini-Setupを使う」にチェックをつけないと、sysprep.infを作成しても使われていないぽい。

カテゴリー: PC タグ: , ,